slf4j配置记录单个文件
slf4j configuration to log a single file
logback.spring.xml 配置为仅在单个 class
上登录
<logger name="classname">
<appender-ref ref="AUDIT_LOG"/>
</logger>
在 class 中只有 1 个调用记录。但是当我查看创建的日志文件时,有 40 000 多行废话。有我想要的1行,但其他40 000行不应该在那里。
我必须如何配置 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>
它听起来就像你希望AUDIT_LOG
为一个记录器保留而只为那个记录器保留。
这条指令...
<logger name="classname">
<appender-ref ref="AUDIT_LOG"/>
</logger>
... 将日志事件从 classname
记录器定向到 AUDIT_LOG
但它不会阻止其他日志事件由该附加程序处理。
如果你想确保 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>
注意:计算器表达式是...
arbitrary Java language block returning a boolean value as the evaluation criteria
logback.spring.xml 配置为仅在单个 class
上登录<logger name="classname">
<appender-ref ref="AUDIT_LOG"/>
</logger>
在 class 中只有 1 个调用记录。但是当我查看创建的日志文件时,有 40 000 多行废话。有我想要的1行,但其他40 000行不应该在那里。
我必须如何配置 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>
它听起来就像你希望AUDIT_LOG
为一个记录器保留而只为那个记录器保留。
这条指令...
<logger name="classname">
<appender-ref ref="AUDIT_LOG"/>
</logger>
... 将日志事件从 classname
记录器定向到 AUDIT_LOG
但它不会阻止其他日志事件由该附加程序处理。
如果你想确保 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>
注意:计算器表达式是...
arbitrary Java language block returning a boolean value as the evaluation criteria