如果我的代码中将布尔变量设置为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
,如果使用date == false
则使用console2布局登录。
是否可以覆盖getLogger?我可以在xml文件中做一些与布尔变量通信的事情吗?这两种方法中的任何一种我都没有成功...
感谢您的帮助!
答案 0 :(得分:0)
您可以使用模式选择器。
PatternLayout可以配置PatternSelector
,以允许它根据日志事件的属性或其他因素选择要使用的模式。 PatternSelector
通常将配置有defaultPattern属性(当其他条件不匹配时使用)和一组PatternMatch
元素,这些元素标识可以选择的各种模式。
MarkerPatternSelector
MarkerPatternSelector
根据日志事件中包含的Marker
选择模式。如果日志事件中的Marker
等于或是PatternMatch
键属性上指定的名称的祖先,那么将使用在该PatternMatch
元素上指定的模式。>
<PatternLayout>
<MarkerPatternSelector defaultPattern="[%-5level] %c{1.} %msg%n">
<PatternMatch key="FLOW" pattern="[%-5level] %c{1.} ====== %C{1.}.%M:%L %msg ======%n"/>
</MarkerPatternSelector>
</PatternLayout>