gpt4 book ai didi

java - Log4j2 在 appender 中过滤特定级别

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:03:37 24 4
gpt4 key购买 nike

我应该使用什么过滤器来定义要用 apender 记录的特定级别?例如:

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>

文件输出很好,但在控制台中我有这样的结果:

[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

但我需要 info-stdout-message appender 来仅输出 INFO 消息,而 detailed-stdout-message 来输出所有 EXEPT INFO。所以控制台输出应该是这样的:

[application.Main] Info message
[application.Main] [WARN] Warn message
[application.Main] [ERROR] Error message
[application.Main] [FATAL] Fatal message

无法找出如何防止过滤器尊重级别继承。可以这样做吗?

最佳答案

这里有两个控制台附加程序。一个将所有跟踪、调试和信息级别记录到 std_out,另一个将所有警告、错误和致命级别记录到 std_err。这非常有用,例如在 eclipse 中,因为 std_err 显示为红色。

<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} (%6r) %-5p [%-7t] %F:%L %x - %m%n" />
<Filters>
<ThresholdFilter level="warn" onMatch="DENY" onMismatch="ACCEPT" />
</Filters>
</Console>

<Console name="STDERR" target="SYSTEM_ERR">
<PatternLayout pattern="%d{HH:mm:ss.SSS} (%6r) %-5p [%-7t] %F:%L %x - %m%n" />
<Filters>
<ThresholdFilter level="WARN" onMatch="ACCEPT" />
</Filters>
</Console>

关于java - Log4j2 在 appender 中过滤特定级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24695133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com