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
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" 🙁
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
Vous devez vous connecter pour publier un commentaire.
Comme référence cette page décrit comment configurer Log4j2:
https://logging.apache.org/log4j/2.x/manual/webapp.html#ContextParams
Dans mon cas, je n'ai pas configuré de context-param dans web.xml. La seule chose que je n'avais plus qu'à définir le nom d'affichage de:
Je suis également en utilisant log4j2.yaml au lieu de fichiers xml et le fichier n'est pas à l'intérieur de la guerre. Notez également que dans cette page https://logging.apache.org/log4j/2.x/manual/webapp.html ils disent qu'il y a un problème avec les versions de Tomcat < 7.0.43. Donc, soit vous devez utiliser une version plus récente de faire une configuration spécifique.
OriginalL'auteur Constantino Cronemberger
Log4J va chercher le log4j2.xml fichier de config dans le classpath, sauf un emplacement spécifié.
Avez-vous essayé pas spécifiant l'emplacement de la log4j2.xml fichier (qui est, retirez la
context-param
des trucs deweb.xml
), et tout simplement en s'appuyant sur la config dans le classpath? (app.war/WEB-INF/classes/log4j2.xml
semble bien pour moi)Notez que le fichier doit être nommé
log4j2.xml
et paslog4j.xml
.OriginalL'auteur Remko Popma