[JAVA] Verstehen Sie den grundlegenden Mechanismus von log4j2.xml

Motivation, Annahmen usw.

――Jedes Mal, wenn ich log4j zum ersten Mal seit langer Zeit berührt habe, habe ich völlig vergessen, wie man es benutzt, also habe ich beschlossen, die Struktur auf meine eigene Weise zu verstehen. ――Weil es eine großartige Gelegenheit war, wollte ich zuerst die Grundstruktur verstehen, deshalb spezifiziere ich grundsätzlich so viele Optionen wie möglich. ―― Darüber hinaus werden Einstellungen, die häufig in der tatsächlichen Entwicklung verwendet werden, manchmal abgeschnitten, da sie auf die grundlegende Verwendung beschränkt sind.

Umgebung verwendet

Java-Quelle zur Ausgabe von Protokollen

logger.fatal("fatal!");
logger.error("error!");
logger.warn("warn!");
logger.info("info!");
logger.debug("debug!");
logger.trace("trace!");

0. Wenn keine Einstellungsdatei vorhanden ist

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console. Set system property 'log4j2.debug' to show Log4j2 internal initialization logging.
15:51:56.904 [main] FATAL Test - fatal!
15:51:56.907 [main] ERROR Test - error!

1. Minimale Konfigurationsdatei

log4j2.xml


<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
</Configuration>

Wenn Sie dies bisher beschrieben haben, wird das Protokoll im Standardformat ausgegeben, ohne dass ein Fehler auftritt.

16:52:31.453 [main] FATAL Test - fatal!
16:52:31.453 [main] ERROR Test - error!

Referenz: http://logging.apache.org/log4j/2.x/manual/configuration.html#ConfigurationSyntax http://logging.apache.org/log4j/2.x/manual/configuration.html#AutomaticConfiguration

2. Minimaler Appender und Logger

Eine Kombination aus "Console Appender" ohne Optionen und "RootLogger" mit genau dem. Der im Attribut "name" von "Appender" angegebene Name wird durch Angabe im Attribut "ref" von "AppenderRef" von "Logger" zugeordnet.

log4j.xml


<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <Console name="STDOUT">
        </Console>
    </Appenders>
    <Loggers>
        <Root>
            <AppenderRef ref="STDOUT"/>
        </Root>
    </Loggers>
</Configuration>
fatal!
error!

Es wird ein einfaches Protokoll nur von Nachrichten ausgegeben.

--Appender definiert das Protokollausgabeziel (Ausgabemethode), das Ausgabelayout usw. --Logger gibt das Protokollausgabeziel und den zu verwendenden Appender an. Es können mehrere Appender angegeben werden. Selbst wenn Sie Appender nicht angeben, tritt kein Fehler auf, aber das Protokoll wird natürlich nirgendwo ausgegeben.

--Console Appender verwendet standardmäßig die Standardausgabe. Wenn Sie in die Standardfehlerausgabe ausgeben möchten, geben Sie target = "SYSTEM_ERR" an.

<Root level="info">
fatal!
error!
warn!
info!

Referenz: http://logging.apache.org/log4j/2.x/manual/configuration.html#Loggers http://logging.apache.org/log4j/2.x/manual/configuration.html#Appenders

3. Layoutspezifikation

Geben Sie zum Festlegen des Ausgabelayouts das Layout für den Anhang an.

<Console name="STDOUT">
    <PatternLayout pattern="%d %p %m%n"/>
</Console>
2017-10-24 18:12:23,469 FATAL fatal!
2017-10-24 18:12:23,472 ERROR error!
2017-10-24 18:12:23,472 WARN warn!
2017-10-24 18:12:23,472 INFO info!

Referenz: http://logging.apache.org/log4j/2.x/manual/layouts.html

4. Child Logger

Definieren Sie nach Bedarf einen untergeordneten Logger von RootLogger.

<Loggers>
    <Logger name="Test">
        <AppenderRef ref="STDOUT"/>
    </Logger>
    <Root>
        <AppenderRef ref="STDOUT"/>
    </Root>
</Loggers>
2017-10-25 13:06:51,840 FATAL fatal!
2017-10-25 13:06:51,840 FATAL fatal!
2017-10-25 13:06:51,840 ERROR error!
2017-10-25 13:06:51,840 ERROR error!

Da sich Logger vom untergeordneten zum übergeordneten Element weitergibt, werden Protokolle zweimal ausgegeben, wenn die Protokollausgabebedingungen gleich sind. Um die Weitergabe zu unterdrücken, geben Sie im untergeordneten Logger additivity = "false" an.

<Logger name="Test" additivity="false">
2017-10-25 13:15:59,282 FATAL fatal!
2017-10-25 13:15:59,282 ERROR error!

Da RootLogger kein übergeordnetes Element hat, kann keine Additivität angegeben werden.

Referenz: http://logging.apache.org/log4j/2.x/manual/configuration.html#Additivity

5. Filter

Der Filter wird verwendet, wenn Sie steuern möchten, ob das Protokoll nur unter bestimmten Bedingungen ausgegeben werden soll oder nicht. Filter können an den folgenden vier Stellen eingestellt werden.

--Konfiguration --Filter für den gesamten Kontext --Logger --Filter für einen bestimmten Logger --Appender --Filter für einen bestimmten Appender --AppenderRef - Filter für einen bestimmten Logger x Appender

Wenn das Protokoll ausgegeben wird, wird beurteilt, dass der Filter angewendet wird, und einer der folgenden drei Status wird zurückgegeben.

--ACCEPT - Protokollausgabe bestätigt --DENY - Protokoll nicht ausgegeben bestätigt --NEUTRAL - Übertragen Sie das Urteil auf den nächsten Filter

<Configuration>
    <RegexFilter regex=".*err.*"/>

Wenn Sie mehrere Filter angeben möchten, fügen Sie diese in Filter ein.

<Configuration>
    <Filters>
        <RegexFilter regex=".*err.*"/>
        <TimeFilter start="9:00:00" end="17:00:00"/>
    </Filters>

Referenz: http://logging.apache.org/log4j/2.x/manual/filters.html

6. Eigenschaften

Eigenschaftswerte können in der Konfigurationsdatei definiert und referenziert werden.

<Configuration>
    <Properties>
        <Property name="myPattern">%d %p %m%n</Property>
    </Properties>
    <Appenders>
        <Console name="STDOUT">
            <PatternLayout pattern="${myPattern}"/>

Es kann verwendet werden, um gemeinsame Elemente und Literalwerte zu extrahieren.

Referenz: http://logging.apache.org/log4j/2.x/manual/configuration.html#Properties

7. Wertreferenz

In der Einstellungsdatei kann auf verschiedene Werte wie Systemumgebungsvariablen und Systemeigenschaften verwiesen werden.

Referenz: http://logging.apache.org/log4j/2.x/manual/lookups.html

8. Skript

Es gibt Mechanismen, die mithilfe von Skripten funktionieren, z. B. ScriptFilter und ScriptPatternSelector. Das Skript kann direkt in die Konfigurationsdatei geschrieben oder auf die Skriptdatei verwiesen werden. Verwenden Sie im ersten Fall das Tag "

Recommended Posts

Verstehen Sie den grundlegenden Mechanismus von log4j2.xml
Verstehen Sie die Grundlagen von Android Audio Record
Verstehe die offizielle Probe Coffee of Dagger2
Lernen Sie den rudimentären Mechanismus und die Verwendung von Gradle 4.4 kennen
[Für Anfänger] Verstehen Sie schnell die Grundlagen von Java 8 Lambda
Verstehen Sie die Eigenschaften von Scala in 5 Minuten (Einführung in Scala)
Beurteilung des Kalenders
Die Welt der Clara-Regeln (4)
Bildverarbeitung: Grundstruktur des vom Programm gelesenen Bildes
Die Welt der Clara-Regeln (1)
Lassen Sie uns die Funktion verstehen!
Die Welt der Clara-Regeln (3)
Die Welt der Clara-Regeln (5)
Die Idee der schnellen Sortierung
Die Idee von jQuery
Ich habe das Verhalten von Java Scanner und .nextLine () nicht wirklich verstanden.
Überprüfen Sie die Grundkenntnisse von Rubin, die oft vergessen werden
Ich habe die grundlegende Grammatik von Ruby kurz zusammengefasst
Befolgen Sie das Memorandum zur Funktionszuordnung (verstehen Sie die Beschreibung des Benutzermodells).
Ein grundlegendes Verständnis des Flusses der rekursiven Verarbeitung anstreben
Über den Umgang mit Null
Hintergrund und Mechanismus des Stoffladers
Docker-Überwachung - Erläuterung der Grundlagen der Grundlagen
[Docker] Einführung in die grundlegende Docker-Anweisung
Informationen zur Beschreibung von Docker-compose.yml
Das Spiel der Instanziierung von java.lang.Void
Lassen Sie uns die if-Anweisung verstehen!
Lassen Sie uns die Wachaussage verstehen!
Verstehen Sie die Hilfsmethode form_with
Super grundlegende Verwendung von Eclipse
Medianwert von drei Werten
[Ruby] Grundlegende Befehlsliste
Lassen Sie uns die For-In-Anweisung verstehen!
Die Illusion der Objektorientierung
Lassen Sie uns die switch-Anweisung verstehen!
Zusammenfassung der Grundfunktionen von ImageJ
Ich habe den Mechanismus von attr_accessor (* Hoge :: ATTRIBUTES) untersucht, den ich manchmal sehe
Ich möchte den Ablauf der Spring-Verarbeitungsanforderungsparameter verstehen
Der Suchtpunkt bei der Durchführung der Basisauthentifizierung mit Java URLConnection