Log4j2 in Tomcat

Ich bin mit Tomcat 6 und versuchen zu wechseln JUL um Log4j2 (2.0 beta 3). Jedoch, wie es ist ganz ein neues Projekt, die Dokumentation ist sehr spärlich und es gibt nicht viele Ressourcen online, noch.

, Was ich will

  1. Alle Ereignisse, die oben genannten debug-Ebene gehen sollte, um eine Datei auf der Festplatte.
  2. Fehler gehen sollte, um syserr.
  3. Alles an info zu warnen, sollte gehen, um sysout.
  4. Markiert audit-logs sollten alle überspringen Sie diese und gehen Sie zu einer anderen Datei auf der Festplatte.

, Was ich versucht habe

Dies ist mein Erster Versuch log4j2.xml Datei:

Was soll ich schreiben in configuration status? Wo ist eine Dokumentation über Sie?

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="info">
<appenders>
    <Console name="Console-err" target="SYSTEM_ERR">
        <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
    <Console name="Console-out" target="SYSTEM_OUT">
        <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
    <File name="MyFile" fileName="app.log">
        <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </File>
</appenders>
<loggers>
    <logger name="com.ecm" level="error" additivity="false">
        <appender-ref ref="Console-err" />
        <appender-ref ref="MyFile" />
    </logger>
    <root level="info">
        <appender-ref ref="Console-out" />
        <appender-ref ref="MyFile" />
    </root>
</loggers>
</configuration>

Wie funktioniert der logger-name beziehen sich auf Java-Klassen und Ihre Logger?

Beispiel-code:

package com.ecm.backend;

public final class Foo {
   private static final Logger LOG = LogManager.getLogger(Foo.class);

   public static void bar() {
     LOG.error("this is error");
     LOG.warn("this is warning");
   }
}

Wenn ich diesen starte, bekomme ich diese in der Konsole und in der log-Datei:

10:22:49.385 [http-8080-3] ERROR com.ecm.backend.Foo - this is error

Warum ist die Warnung ignoriert?

Wenn ich entfernen Sie die additivity="false" ich bekommen:

10:26:51.388 [http-8080-1] ERROR com.ecm.backend.Foo - this is error
10:26:51.388 [http-8080-1] ERROR com.ecm.backend.Foo - this is error

Die Warnung wird ignoriert, wieder und der Fehler wiederholt sich (wie erwartet).

Was mache ich falsch?


Unter der Falte: rest der Tomcat verwenden können, JULI, ich will nur Log4j2 für meine Anwendung.

InformationsquelleAutor vektor | 2012-12-02
Schreibe einen Kommentar