Log4j2.xml dans la configuration web.xml. IllegalArgumentException - uri n'est pas absolue

Avant d'ajouter context-param et Log4jConfigListener pour Log4j2, j'ai eu tous les journaux répertoriés dans catalina.hors fichier.

Alors maintenant, je suis en train de configurer log4j pour mon application web.

Dans web.xml, j'ai ajouté de configuration nécessaires.

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_2_5.xsd">
    <display-name>etl-service</display-name>

    <!-- Support for Spring -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:applicationContext.xml</param-value>
    </context-param>

    <context-param>
        <param-name>spring.profiles.active</param-name>
        <param-value>myprofile</param-value>
    </context-param>

    <context-param>
        <param-name>log4jConfiguration</param-name>
        <param-value>/WEB-INF/classes/log4j2.xml</param-value>
    </context-param>

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

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


</web-app>

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="trace" strict="true" name="XMLConfigTest"
packages="">         
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<RollingRandomAccessFile name="RollingRandomAccessFileDebug" fileName="/local/deploy/logs/debug.log"
filePattern="logs/$${date:yyyy-MM}/etl-%d{MM-dd-yyyy}-%i.log.gz"
immediateFlush="false"
append="false">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
</RollingRandomAccessFile>
<RollingRandomAccessFile name="RollingRandomAccessFile" fileName="/local/deploy/logs/info.log"
filePattern="logs/$${date:yyyy-MM}/etl-%d{MM-dd-yyyy}-%i.log.gz"
immediateFlush="false"
append="false">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
</RollingRandomAccessFile>
<!--<Async name="AsyncConsole">-->
<!--<AppenderRef ref="Console"/>-->
<!--</Async>-->
</Appenders>
<Loggers>
<Root  level="TRACE">
<AppenderRef ref="RollingRandomAccessFileDebug" level="DEBUG"/>
<AppenderRef ref="RollingRandomAccessFile" level="INFO"/>
<AppenderRef ref="Console"  level="TRACE"/>
</Root>
</Loggers>
</Configuration>

Mais pour l'instant j'ai la d'erreur suivant:

ERROR Unable to access WEB-INF/classes/log4j2.xml java.lang.IllegalArgumentException: URI is not absolute

Peut-être que quelqu'un a déjà été confronté à ce problème. Aussi j'ai essayé
au lieu de l'ajout /WEB-INF/classes/log4j.xml utilisation classpath*:log4j.xml

Et avait un erreur java.net.URISyntaxException: Illegal character in schema name at 9 index: classpath*:log4j.xml

Mise à JOUR:
Nous avons besoin d'ajouter de descripteur nom de fichier et ça fonctionne.

<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>log4j2.xml</param-value>
</context-param>

Mais question remineds journaux figurant dans catalina.fichier. Pas dans mon log4j fichiers.

Vous ne devriez même pas besoin de spécifier le fichier de configuration de l'emplacement lorsque c'est la valeur par défaut.
qu'entendez-vous par config? qu'est-ce que l'emplacement par défaut?
L'emplacement par défaut est à la racine du classpath. Où vous l'avez. Par "config", je veux dire "configuration". Rester en sécurité, par la manière.
Merci, déjà trouvé le problème. J'ai ajouté <param-value>log4j2.xml</param-value> en l'absence de répertoires. Et je croyais que,s il. Mais maintenant un autre problème. Tous mes journaux va à catalina.mais pas dans mon log4j fichiers.
On devrait peut-être ajouter un peu de configuration dans tomcat/logs/enregistrement.propriétés

OriginalL'auteur slisnychyi | 2014-02-21