Uploaded image for project: 'Solr'
  1. Solr
  2. SOLR-12538

log4j exceptions during startup on Windows

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 7.4
    • 7.5, 8.0
    • scripts and tools
    • None

    Description

      Note that there has been some input regarding this issue on the Solr mailinglist:
      http://lucene.472066.n3.nabble.com/Logging-fails-when-starting-Solr-in-Windows-using-solr-cmd-td4396671.html

      Problem description
      ==================

      System: Microsoft Windows 10 Enterprise Version 10.0.16299 Build 16299

      Steps to reproduce the problem:
      1) Download solr-7.4.0.zip

      2) Unzip to C:\solr-7.4.0

      3) No changes (configuration or otherwise) whatsoever

      4) Open cmd.exe

      5) Execute the following command: cd c:\solr-7.4.0\bin

      6) Execute the following command: solr.cmd start -p 8983

      7) The following console output appears:

      c:\solr-7.4.0\bin>solr.cmd start -p 8983 
      ERROR StatusLogger Unable to access 
      file:/c:/solr-7.4.0/server/file:c:/solr-7.4.0/server/scripts/cloud-scripts/log4j2.xml 
        java.io.FileNotFoundException: 
      c:\solr-7.4.0\server\file:c:\solr-7.4.0\server\scripts\cloud-scripts\log4j2.xml 
      (Die Syntax für den Dateinamen, Verzeichnisnamen oder die 
      Datenträgerbezeichnung ist falsch) 
               at java.io.FileInputStream.open0(Native Method) 
               at java.io.FileInputStream.open(FileInputStream.java:195) 
               at java.io.FileInputStream.<init>(FileInputStream.java:138) 
               at java.io.FileInputStream.<init>(FileInputStream.java:93) 
               at 
      sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90) 
               at 
      sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188) 
               at java.net.URL.openStream(URL.java:1045) 
               at 
      org.apache.logging.log4j.core.config.ConfigurationSource.fromUri(ConfigurationSource.java:247) 
               at 
      org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.getConfiguration(ConfigurationFactory.java:404) 
               at 
      org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.getConfiguration(ConfigurationFactory.java:346) 
               at 
      org.apache.logging.log4j.core.config.ConfigurationFactory.getConfiguration(ConfigurationFactory.java:260) 
               at 
      org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:615) 
               at 
      org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:636) 
               at 
      org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:231) 
               at 
      org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:153) 
               at 
      org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45) 
               at 
      org.apache.logging.log4j.LogManager.getContext(LogManager.java:194) 
               at 
      org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:121) 
               at 
      org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:43) 
               at 
      org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:46) 
               at 
      org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:29) 
               at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:358) 
               at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:383) 
               at org.apache.solr.util.SolrCLI.<clinit>(SolrCLI.java:228) 
      ERROR StatusLogger Unable to access 
      file:/c:/solr-7.4.0/server/file:c:/solr-7.4.0/server/resources/log4j2.xml 
        java.io.FileNotFoundException: 
      c:\solr-7.4.0\server\file:c:\solr-7.4.0\server\resources\log4j2.xml (Die 
      Syntax für den Dateinamen, Verzeichnisnamen oder die 
      Datenträgerbezeichnung ist falsch) 
               at java.io.FileInputStream.open0(Native Method) 
               at java.io.FileInputStream.open(FileInputStream.java:195) 
               at java.io.FileInputStream.<init>(FileInputStream.java:138) 
               at java.io.FileInputStream.<init>(FileInputStream.java:93) 
               at 
      sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90) 
               at 
      sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188) 
               at java.net.URL.openStream(URL.java:1045) 
               at 
      org.apache.logging.log4j.core.config.ConfigurationSource.fromUri(ConfigurationSource.java:247) 
               at 
      org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.getConfiguration(ConfigurationFactory.java:404) 
               at 
      org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.getConfiguration(ConfigurationFactory.java:346) 
               at 
      org.apache.logging.log4j.core.config.ConfigurationFactory.getConfiguration(ConfigurationFactory.java:260) 
               at 
      org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:615) 
               at 
      org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:636) 
               at 
      org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:231) 
               at 
      org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:153) 
               at 
      org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45) 
               at 
      org.apache.logging.log4j.LogManager.getContext(LogManager.java:194) 
               at 
      org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:121) 
               at 
      org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:43) 
               at 
      org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:46) 
               at 
      org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:29) 
               at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:358) 
               at org.eclipse.jetty.util.log.Slf4jLog.<init>(Slf4jLog.java:38) 
               at org.eclipse.jetty.util.log.Slf4jLog.<init>(Slf4jLog.java:32) 
               at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 
      Method) 
               at 
      sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
               at 
      sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
               at 
      java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
               at org.eclipse.jetty.util.log.Log.initialized(Log.java:178) 
               at org.eclipse.jetty.util.log.Log.getLogger(Log.java:311) 
               at org.eclipse.jetty.util.log.Log.getLogger(Log.java:301) 
               at 
      org.eclipse.jetty.xml.XmlConfiguration.<clinit>(XmlConfiguration.java:80) 
               at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
               at 
      sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
               at 
      sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
               at java.lang.reflect.Method.invoke(Method.java:498) 
               at org.eclipse.jetty.start.Main.invokeMain(Main.java:220) 
               at org.eclipse.jetty.start.Main.start(Main.java:486) 
               at org.eclipse.jetty.start.Main.main(Main.java:77) 
      INFO  - 2018-07-03 10:12:19.375; 
      org.apache.solr.util.configuration.SSLCredentialProviderFactory; 
      Processing SSL Credential Provider chain: env;sysprop 
      Waiting up to 30 to see Solr running on port 8983 
      Started Solr server on port 8983. Happy searching! 
      
      
      c:\solr-7.4.0\bin> 

       

      Proposed workaround
      ==================

      8) I managed to fix the situation temporarily as follows (but I am not
      convinced this is the correct way to comprehensively tackle the problem)
          Edit C:\solr-7.4.0\bin\solr.cmd as follows:
          Change all occurrences of '-Dlog4j.configurationFile="file:' to
      '-Dlog4j.configurationFile="' (19 occurrences in total)
          Change all occurrences of 'LOG4J_CONFIG=file:*' to '*LOG4J_CONFIG=' (2
      occurrences in total)

      9) Execute the following command: solr.cmd restart -p 8983

      10) The following console output appears:

      c:\solr-7.4.0\bin>solr.cmd restart -p 8983 
      Stopping Solr process 20024 running on port 8983 
      
      Gewartet wird 0 Sekunden. Weiter mit beliebiger Taste... 
      INFO  - 2018-07-03 10:47:57.994; 
      org.apache.solr.util.configuration.SSLCredentialProviderFactory; 
      Processing SSL Credential Provider chain: env;sysprop 
      Waiting up to 30 to see Solr running on port 8983 
      Started Solr server on port 8983. Happy searching! 
      
      c:\solr-7.4.0\bin> 

      Cheers, Jakob

       

      Attachments

        Issue Links

          Activity

            People

              erickerickson Erick Erickson
              jafurrer Jakob Furrer
              Votes:
              1 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: