gpt4 book ai didi

java - 在运行时更改记录器

转载 作者:行者123 更新时间:2023-12-02 00:54:03 24 4
gpt4 key购买 nike

如果我的代码中的 boolean 变量设置为 true,我将尝试记录到某个布局,否则使用另一个布局进行记录。

目前我有一个简单的 XML,看起来有点像这样:

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="false">

<appender name="console1" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
</layout>
</appender>

<appender name="console2" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%-5p %m"/>
</layout>
</appender>

<root>
<level value="DEBUG" />
<appender-ref ref="console" />
</root>

</log4j:configuration>

我想做的是使用 console1 布局进行日志 date == true ,并使用 console2 布局进行记录 if date == false .

是否可以重写 getLogger?我可以在 xml 文件中执行某些操作来与 boolean 变量进行通信吗?这两种方法我都没有成功...

感谢您的帮助!

最佳答案

您可以使用模式选择器

PatternLayout可以使用PatternSelector进行配置,以允许它根据日志事件的属性或其他因素选择要使用的模式。 PatternSelector 通常会配置一个 defaultPattern 属性(当其他条件不匹配时使用该属性)和一组 PatternMatch 元素(用于标识可以被选择的各种模式)已选择。

标记图案选择器

MarkerPatternSelector 根据日志事件中包含的Marker 选择模式。如果日志事件中的 Marker 等于或者是在 PatternMatch 键属性上指定的名称的祖先,则在该 PatternMatch 上指定的模式将使用 code> 元素。

<PatternLayout>
<MarkerPatternSelector defaultPattern="[%-5level] %c{1.} %msg%n">
<PatternMatch key="FLOW" pattern="[%-5level] %c{1.} ====== %C{1.}.%M:%L %msg ======%n"/>
</MarkerPatternSelector>
</PatternLayout>

关于java - 在运行时更改记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57835645/

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