Log4J2 de configuration dans la servlet 3.0

J'ai essayé de mettre en place LOG4J selon la documentation (et SI des questions), mais il ne crée pas censé fichier, mais il y a un tel journal dans 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/lib

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

Pourriez-vous me dire quel est le problème? J'ai essayé de commenter contexte param dans web.xml et de s'appuyer sur l'autoconfiguration, mais il n'y a pas de changement.

MODIFIER

quand j'ai ajouté le code suivant

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

il a échoué différemment (je n'ai pas le temps d'étudier maintenant)

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)
Utiliser le bon context-param. Il devrait être log4jConfiguration au lieu de log4jConfigLocation. Voir logging.apache.org/log4j/2.x/manual/webapp.html#Servlet-3.0.
log4jConfiguration: Impossible d'accéder à /WEB-INF/classes/log4j2.xml java.lang.IllegalArgumentException: URI n'est pas absolue. log4jConfigLocation est capable de lire des config à partir de l'intérieur de la guerre. Quand j'ai changé l'emplacement du journal, il a échoué avec certains d'erreur de syntaxe.
J'ai essayé de compter entièrement sur l'autoconfiguration j'ai donc commenté LOG4J des trucs dans web.xml. Configuration fonctionne, mais l'avertissement est toujours affiché "Pas de Log4j contexte de configuration fourni. Ce qui est très inhabituel" 🙁

OriginalL'auteur Leos Literak | 2014-02-20