Log4J2 configuration in 3.0 servlet

I tried to configure LOG4J according to the documentation (and related SO questions), but it does not create the intended file, but there is such a log in WildFly:

No Log4j context configuration provided. This is very unusual 

web.xml

 <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/classes/log4j2.xml</param-value> </context-param> 

app.war / WEB-INF / classes / log4j2.xml

 <?xml version="1.0" encoding="UTF-8"?> <Configuration monitorInterval="30"> <!-- http://logging.apache.org/log4j/2.x/manual/configuration.html --> <Properties> <Property name="filename">c:/oauth.log</Property> </Properties> <Filter type="ThresholdFilter" level="trace"/> <Appenders> <Appender type="File" name="File" fileName="${filename}"> <Layout type="PatternLayout"> <Pattern>%d %p %C{1.} [%t] %m%n</Pattern> </Layout> </Appender> <File name="MyFile" fileName="c:/oauth2.log" immediateFlush="true"> <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </File> </Appenders> <Loggers> <Logger name="cz.literak.demo" level="debug" additivity="true"> <AppenderRef ref="File"/> </Logger> <Root level="error"> <AppenderRef ref="MyFile"/> </Root> </Loggers> </Configuration> 

app.war / WEB-INF / Library

 commons-logging-1.1.3.jar json-smart-1.1.1.jar log4j-api-2.0-rc1.jar log4j-core-2.0-rc1.jar log4j-jcl-2.0-rc1.jar 

Could you tell me what is wrong? I tried to comment on the param context in the web.xml file and rely on autoconfiguration, but there were no changes.

EDIT

when i added the following code

 <context-param> <param-name>log4jContextName</param-name> <param-value>oauthDemo</param-value> </context-param> 

he did otherwise (I do not have time to investigate)

 07:41:29,269 INFO [io.undertow.servlet] (MSC service thread 1-12) Log4jServletContainerInitializer starting up Log4j in Servlet 3.0+ environment. 07:41:29,644 INFO [stdout] (MSC service thread 1-12) 2014-02-20 07:41:29,643 ERROR FileManager (c:/oauth2.log) java.io.FileNotFoundException: c:\oauth2.log (PĹ™Ăstup byl odepĹ™en) 07:41:29,646 INFO [stdout] (MSC service thread 1-12) 2014-02-20 07:41:29,645 ERROR Unable to invoke method createAppender in class org.apache.logging.log4j.core.appender.FileAppender for element File 07:41:29,647 INFO [stdout] (MSC service thread 1-12) at org.apache.logging.log4j.core.config.BaseConfiguration.createPluginObject(BaseConfiguration.java:913) 
+8
java logging log4j log4j2
source share
2 answers

As a link, this page describes how to configure Log4j2:

https://logging.apache.org/log4j/2.x/manual/webapp.html#ContextParams

In my case, I did not configure any context-param in web.xml. The only thing I needed to do was set the display name:

 <display-name>My Admin API</display-name> 

I also use log4j2.yaml instead of xml files, and the file is not inside the war. Also note that this page https://logging.apache.org/log4j/2.x/manual/webapp.html says that there is a problem with Tomcat versions <7.0.43. Therefore, either you must use a newer version to perform a specific configuration.

+6
source share

Log4J will look for the log4j2.xml configuration file in the classpath if no location is specified. Have you tried to indicate the location of the log4j2.xml file (i.e. remove the context-param material from web.xml ) and simply rely on the location of the configuration in the classpath? ( app.war/WEB-INF/classes/log4j2.xml looks good to me)

Note that the file should be named log4j2.xml , not log4j.xml .

+4
source share

All Articles