Log4j.xml throw file not found in Java EE applicat

2019-08-02 08:10发布

问题:

I am trying to log using log4j in my Java EE application in the following way where i have defined a log4j.xml in the application.

I am trying to access it using

   DOMConfigurator.configure( "src/log4j.xml");
   logger.warn( "Login Process has started a warning message" );

but it keeps throwing the following error

** edited error message

log4j:ERROR Could not parse file [src/log4j.xml].
 java.io.FileNotFoundException: D:\src\log4j.xml (The system cannot find the path s     pecified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)
at java.io.FileInputStream.<init>(FileInputStream.java:79)
at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70)
at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161)
at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:208)
at org.apache.log4j.xml.DOMConfigurator$1.parse(DOMConfigurator.java:749)
at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:866)
at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:755)

When i provided the absolute path everything is working .

So whats the way to achieve this? I am using 1.2.16.jar version of log4j

and i get following warning each time i build the app

log4j:WARN No appenders could be found for logger     (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

Edited: Application struture

Myapp
  src
  conf
  target

and i have palced log4j.xml under folder src

log4j.xml file

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
    <param name="Target" value="System.out" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%-5p %c{1} - %m%n" />
    </layout>
</appender>
   <appender name="Log" class="org.apache.log4j.FileAppender">
    <param name="File" value="Web.log" />
    <param name="Append" value="true" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{DATE} %-5p %-15c{1}: %m%n" />
    </layout>
</appender>

<logger name="com.web" additivity="false">
    <level value="info" />
    <appender-ref ref="Log" />
</logger>

</log4j:configuration>

Thanks

回答1:

Better put it inside src/main/resources folder.

You can also rename it to log4j.properties, depending on your file format.
And you should have either log4j.jar, or if you are using maven add dependencies to pom.xml file.



回答2:

configure web.xml file like this.

   <!-- these are at the top of the xml configuration file -->
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>WEB-INF/conf/log4j.xml</param-value>
    </context-param>

    <context-param>
        <param-name>webAppRootKey</param-name>
        <param-value>api.root</param-value>
    </context-param> 

    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- ... -->

This may help you : http://forum.springsource.org/showthread.php?30800-SpringMVC-XML-Log4j-Logging-not-functioning



回答3:

Try changing

DOMConfigurator.configure( "src/log4j.xml");

To

DOMConfigurator.configure( "/src/log4j.xml");


标签: java xml log4j