Chaque fois que j'ai touché log4j pour la première fois depuis longtemps, j'ai complètement oublié comment l'utiliser, alors j'ai décidé de comprendre la structure à ma manière. «Parce que c'était une excellente opportunité, je voulais d'abord comprendre la structure de base, donc je spécifie essentiellement les options autant que possible. De plus, comme il est limité à l'utilisation de base, les paramètres souvent utilisés dans le développement réel sont parfois coupés.
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>
Si vous décrivez jusqu'à présent, le journal sera sorti dans le format par défaut sans qu'aucune erreur ne se produise.
16:52:31.453 [main] FATAL Test - fatal!
16:52:31.453 [main] ERROR Test - error!
référence: http://logging.apache.org/log4j/2.x/manual/configuration.html#ConfigurationSyntax http://logging.apache.org/log4j/2.x/manual/configuration.html#AutomaticConfiguration
Une combinaison de Console Appender
sans options et de RootLogger
avec juste cela.
Le nom donné par l'attribut name
de ʻAppender est associé en le spécifiant par l'attribut
ref de ʻAppenderRef
de Logger
.
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!
Un simple journal contenant uniquement les messages est généré.
--Appender définit la destination de sortie du journal (méthode de sortie), la disposition de sortie, etc. --Logger spécifie la cible de sortie du journal et l'appendeur à utiliser. Plusieurs Appenders peuvent être spécifiés. Même si vous ne spécifiez pas Appender, aucune erreur ne se produira, mais bien sûr, le journal ne sera affiché nulle part.
--Console Appender utilise par défaut la sortie standard. Si vous souhaitez effectuer une sortie vers la sortie d'erreur standard, spécifiez target = "SYSTEM_ERR".
En fait, même si la destination de sortie est la sortie standard, il existe de nombreux cas où target = "SYSTEM_OUT" est explicitement décrit.
En spécifiant le niveau de l'enregistreur, vous pouvez contrôler le niveau de sortie du journal de cet enregistreur.
<Root level="info">
fatal!
error!
warn!
info!
référence: http://logging.apache.org/log4j/2.x/manual/configuration.html#Loggers http://logging.apache.org/log4j/2.x/manual/configuration.html#Appenders
Pour spécifier la disposition de sortie, spécifiez Disposition pour Appender.
<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!
Référence: http://logging.apache.org/log4j/2.x/manual/layouts.html
Définissez un enregistreur enfant de RootLogger si nécessaire.
<Loggers>
<Logger name="Test">
<AppenderRef ref="STDOUT"/>
</Logger>
<Root>
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
--L'attribut name est requis pour le Logger enfant, et la classe ou le package à journaliser est spécifié ici.
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!
Puisque Logger se propage de l'enfant au parent, les journaux sont émis deux fois si les conditions de sortie du journal sont les mêmes. Pour supprimer la propagation, spécifiez additivity = "false" dans le Logger enfant.
<Logger name="Test" additivity="false">
2017-10-25 13:15:59,282 FATAL fatal!
2017-10-25 13:15:59,282 ERROR error!
Puisque RootLogger n'a pas de parent, l'additivité ne peut pas être spécifiée.
Référence: http://logging.apache.org/log4j/2.x/manual/configuration.html#Additivity
Le filtre est utilisé lorsque vous souhaitez contrôler la sortie ou non du journal uniquement dans des conditions spécifiques. Les filtres peuvent être définis aux quatre emplacements suivants.
--Configuration --Filtre pour tout le contexte --Logger --Filtre pour un enregistreur spécifique --Appender --Filtre pour un Appender spécifique --AppenderRef --Filtre pour un Logger x Appender spécifique
Lorsque le journal est sorti, il est estimé que le filtre est appliqué et l'un des trois états suivants est renvoyé.
--ACCEPT - Sortie de journal confirmée --DENY --Log non-sortie confirmée --NEUTRAL --Transfert le jugement au filtre suivant
<Configuration>
<RegexFilter regex=".*err.*"/>
Si vous souhaitez spécifier plusieurs filtres, placez-les dans Filtres.
<Configuration>
<Filters>
<RegexFilter regex=".*err.*"/>
<TimeFilter start="9:00:00" end="17:00:00"/>
</Filters>
--Si plusieurs filtres sont définis, le jugement sera effectué dans l'ordre défini. --Si ACCEPTER ou REFUSER est retourné, le jugement est confirmé à ce stade et le jugement des filtres restants n'est pas effectué. --Si NEUTRAL est renvoyé, le jugement passe au filtre suivant. --Si le filtre suivant n'est plus disponible, il sera traité comme ACCEPTER.
Référence: http://logging.apache.org/log4j/2.x/manual/filters.html
Les valeurs de propriété peuvent être définies et référencées dans le fichier de configuration.
<Configuration>
<Properties>
<Property name="myPattern">%d %p %m%n</Property>
</Properties>
<Appenders>
<Console name="STDOUT">
<PatternLayout pattern="${myPattern}"/>
Il peut être utilisé pour extraire des éléments communs et des valeurs littérales.
Référence: http://logging.apache.org/log4j/2.x/manual/configuration.html#Properties
Diverses valeurs telles que les variables d'environnement système et les propriétés système peuvent être référencées dans le fichier de paramètres.
$ {env: os}
,$ {env: nom_ordinateur}
, etc.
--Propriétés du système
--$ {sys: java.home}
,$ {sys: file.encoding}
, etc.Référence: http://logging.apache.org/log4j/2.x/manual/lookups.html
Il existe des mécanismes qui fonctionnent à l'aide de scripts, tels que ScriptFilter et ScriptPatternSelector. Le script peut être écrit directement dans le fichier de configuration ou le fichier de script peut être référencé. Dans le premier cas, utilisez la balise «
Recommended Posts