Log4j2 Filtre de niveau particulier dans apender
Ce filtre dois-je utiliser, pour définir notamment le niveau pour être connecté avec apender? Par exemple:
java:
LOGGER.debug("Debug message");
LOGGER.info("Info message");
LOGGER.warn("Warn message");
LOGGER.error("Error message");
LOGGER.fatal("Fatal message");
log4j2.xml:
<Configuration>
<Appenders>
<Console name="info-stdout-message">
<PatternLayout pattern="[%logger{36}] %message %n" />
<ThresholdFilter level="info"/>
</Console>
<Console name="detailed-stdout-message">
<PatternLayout pattern="[%logger{36}] [%level] %message %n" />
</Console>
<File name="file-appender" fileName="logs/debug.log">
<PatternLayout pattern="%d{HH:mm:ss dd.mm} [%t] [%-5level] %logger{36} - %msg %n" />
</File>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="file-appender" level="debug" />
<AppenderRef ref="info-stdout-message" level="info"/>
<AppenderRef ref="detailed-stdout-message" level="info"/>
</Root>
</Loggers>
</Configuration>
Le fichier de sortie est très bien, mais dans la console j'ai comme résultat:
[application.Main] [INFO] Info message
[application.Main] Info message
[application.Main] [WARN] Warn message
[application.Main] Warn message
[application.Main] [ERROR] Error message
[application.Main] Error message
[application.Main] [FATAL] Fatal message
[application.Main] Fatal message
mais j'ai besoin de info-stdout-message
appender à la sortie des messages d'information, tandis que detailed-stdout-message
à la production de tous SAUF de l'INFO. Donc la sortie de la console devrait ressembler à:
[application.Main] Info message
[application.Main] [WARN] Warn message
[application.Main] [ERROR] Error message
[application.Main] [FATAL] Fatal message
Ne pouvez pas savoir comment prévenir les filtres de niveau respect de l'héritage. Est-il possible de faire cela?
Est-il un moyen de le faire par programmation au lieu de faire le fichier de configuration de définir le niveau de filtrage ?
OriginalL'auteur ovnia | 2014-07-11
Vous devez vous connecter pour publier un commentaire.
Cela fonctionne:
OriginalL'auteur Remko Popma
Ici deux console appenders. L'un des journaux de toute trace, de débogage et de l'info niveaux de std_out, les autres journaux tous warn, error et fatal niveaux de std_err. C'est très utile par exemple, au sein d'eclipse depuis std_err est affiché en rouge.
OriginalL'auteur Heri
Il m'a fallu très longtemps pour comprendre comment filtrer une plage de Niveaux via l'log4j2.xml fichier de configuration.
En Fin de compte cela a fonctionné pour moi :
Dans ce cas, Log4J consigner tous les messages de Niveau.TRACE à Niveau.DÉBOGUER, à tous les niveaux en dessous du Niveau.DEBUG sera ignoré.
OriginalL'auteur downdrown
Veuillez cocher toutes les log4j2 possibilités de filtrages à https://logging.apache.org/log4j/2.0/manual/filters.html
Exemple de configuration fragment
OriginalL'auteur myset
En fait, de votre question, il semble que vous ne voulez pas deux appenders, mais deux modèles différents qui sont à l'aide dans des circonstances différentes. Pour cela vous devez simplement utiliser un PatternSelector.
OriginalL'auteur rgoers