――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.
logger.fatal("fatal!");
logger.error("error!");
logger.warn("warn!");
logger.info("info!");
logger.debug("debug!");
logger.trace("trace!");
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!
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
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.
Selbst wenn das Ausgabeziel die Standardausgabe ist, gibt es viele Fälle, in denen target = "SYSTEM_OUT" explizit beschrieben wird.
Durch Angabe der Ebene für Logger können Sie die Protokollausgabepegel dieses Loggers steuern.
<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
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
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
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
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
In der Einstellungsdatei kann auf verschiedene Werte wie Systemumgebungsvariablen und Systemeigenschaften verwiesen werden.
$ {env: os}
,$ {env: Computername}
usw.
--Systemeigenschaften
--$ {sys: java.home}
,$ {sys: file.encoding}
usw.Referenz: http://logging.apache.org/log4j/2.x/manual/lookups.html
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