我已经定义了一个标记
,并且只想将其记录到特定文件中。因此我尝试设置additivity = false
。但它不起作用,并且仍然还记录到我的全局日志文件中。这里可能出了什么问题?
<Configuration>
<Appenders>
<RollingFile name="TEST" fileName="test.log" filePattern="test1.log">
<MarkerFilter marker="TEST_LOG" onMatch="ACCEPT" onMismatch="DENY"/>
</RollingFile>
<RollingFile name="GLOBAL" fileName="global.log" filePattern="global.log">
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
<MarkerFilter marker="TEST_LOG" onMatch="DENY" onMismatch="ACCEPT"/>
</RollingFile>
</Appenders>
<Loggers>
<logger name="foo" additivity="false">
<appender-ref ref="TEST" />
</logger>
</Loggers>
</Configuration>
用法:
LogManager.getRootLogger().info(MarkerManager.getMarker("TEST_LOG"), "test log");
最佳答案
在示例代码中,标记名为“TEST”
,但在配置中,MarkerFilter 仅接受带有标记“TEST_LOG”
的日志事件。配置和代码应该使用相同的字符串。
此外,您可能需要定义两个 Appender:一个用于您的全局日志文件,另一个用于您的特定(标记)日志事件。然后仅在您的特定附加程序中接受标记的日志事件,并在全局附加程序中拒绝标记的日志事件。
关于java - 如何禁用标记记录器上的可加性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21282831/