我试图使用log4j2
:
将所有常规内容记录到控制台,但仅将MarkerFilter.FILTERED
记录到特定文件,而不是登录到控制台。
<Configuration>
<Appenders>
<Console name="CONSOLE" target="SYSTEM_OUT">
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
</Console>
<RollingFile name="FILTERED" fileName="filtered.txt" />
<MarkerFilter marker="FILTERED" onMatch="ACCEPT" onMismatch="DENY"/>
</RollingFile>
</Appenders>
<Loggers>
<Root level="all">
<AppenderRef ref="CONSOLE" />
<AppenderRef ref="FILTERED" />
</Root>
</Loggers>
</Configuration>
以下工作原理,但另外将任何FILTERED
内容记录到控制台。
但是当我删除<AppenderRef ref="FILTERED" />
形式<root>
记录器时,该文件不会再记录任何内容了!
答案 0 :(得分:1)
如何使用DENY操作在控制台appender上使用标记过滤器?
您可以在appender-ref上设置级别,因此您无需使用ThresholdFilter
。
<Configuration status="warn">
<Appenders>
<Console name="CONSOLE" target="SYSTEM_OUT">
<MarkerFilter marker="FILTERED" onMatch="DENY" onMismatch="ACCEPT"/>
</Console>
<RollingFile name="FILTERED" fileName="filtered.txt" />
<MarkerFilter marker="FILTERED" onMatch="ACCEPT" onMismatch="DENY"/>
</RollingFile>
</Appenders>
<Loggers>
<Root level="all">
<AppenderRef ref="CONSOLE" level="info" />
<AppenderRef ref="FILTERED" />
</Root>
</Loggers>
</Configuration>