logback.spring.xml配置为仅记录单个类
<logger name="classname">
<appender-ref ref="AUDIT_LOG"/>
</logger>
在课堂上只有一次来电记录。但是当我查看创建的日志文件时,有4万多行无意义。我想要的是1行,但其他4万行不应该在那里。
我如何配置logback以确保日志文件只包含1个日志邀请而不包含任何内容?
<appender name="AUDIT_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/audit/audit.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>${LOG_PATH}/audit/audit.%i.log.gz</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>10</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>10MB</maxFileSize>
</triggeringPolicy>
<encoder>
<charset>utf-8</charset>
<Pattern>${FILE_LOG_PATTERN}</Pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
答案 0 :(得分:1)
听起来就像您想要为一个记录器保留AUDIT_LOG
而为该记录器保留 。
这条指令......
<logger name="classname">
<appender-ref ref="AUDIT_LOG"/>
</logger>
...将日志事件从classname
记录器定向到AUDIT_LOG
,但它不会阻止该appender处理其他日志事件。
如果您想确保AUDIT_LOG
appender仅处理特定记录器的事件,那么您可以使用EvaluatorFilter
。
以下是使用Logback的JaninoEventEvaluator
:
<appender name="AUDIT_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- this filter will accept all log events having the logger name "classname" -->
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator>
<expression>return logger.equals("classname");</expression>
</evaluator>
<OnMismatch>DENY</OnMismatch>
<OnMatch>NEUTRAL</OnMatch>
</filter>
<file>${LOG_PATH}/audit/audit.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>${LOG_PATH}/audit/audit.%i.log.gz</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>10</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>10MB</maxFileSize>
</triggeringPolicy>
<encoder>
<charset>utf-8</charset>
<Pattern>${FILE_LOG_PATTERN}</Pattern>
</encoder>
</appender>
注意:评估者表达式是......
任意Java语言块返回布尔值作为评估标准