Log4j2.xml Konfiguration in web.xml. IllegalArgumentException - uri ist nicht absolut

Vor der Zugabe context-param und Log4jConfigListener für Log4j2 hatte ich alle Protokolle aufgeführt, die in catalina.aus Datei.

So, jetzt, ich bin versucht zu konfigurieren log4j für meine web-Anwendung.

In web.xml, die ich Hinzugefügt habe, notwendige Konfiguration.

<?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>

Aber für heute habe ich die folgenden Fehler:

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

Vielleicht jemand schon konfrontiert mit einem solchen Problem. Auch das habe ich versucht
statt das hinzufügen von /WEB-INF/classes/log4j.xml verwenden classpath*:log4j.xml

War und eine Fehler java.net.URISyntaxException: Illegal character in schema name at 9 index: classpath*:log4j.xml

UPDATE:
Müssen wir hinzufügen, nur descriptor-Datei Namen und es funktioniert.

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

Aber Problem remineds Protokolle aufgeführt, die in catalina.aus Datei. Nicht in meiner log4j-Dateien.

Sollten Sie nicht selbst benötigen, geben Sie die config-Position, wenn es die Standardeinstellung ist.
was meinst du mit config? was ist der Standard-Speicherort?
Der Standard-Speicherort ist im root des classpath. Wo haben Sie es. Von "config" - ich meine "Konfiguration". Bleiben Sie sicher, indem Sie die Art und Weise.
Danke, schon gefunden, das Problem. Ich habe <param-value>log4j2.xml</param-value> ohne Verzeichnisse. Und ich thougth,dass s es. Aber jetzt ein weiteres Problem. Alle meine logs geht zu catalina.aber nicht in meiner log4j-Dateien.
Vielleicht sollten wir hinzufügen, dass einige Konfiguration in tomcat/logs/Protokollierung.Eigenschaften

InformationsquelleAutor slisnychyi | 2014-02-21

Schreibe einen Kommentar