我正在努力实现记录器,并尝试使用ERROR级别日志以不同的模式打印记录器语句。
这是用于打印记录器的XML配置。有没有办法添加多个模式并根据条件打印语句。
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME:-logs}/${LOG_FILE_NAME:-eportal-daas}.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger - %M - %L :[trackId=%X{trackId}]|uuid=%uuid|accountName=%X{accountName}|appName=%X{appName}|userName=%X{userName}|exceptionIssueCode=%expRoot|
:errorMessage=%msg
:stackTrace=%ex %n
</Pattern>
</encoder>
</appender>
下面是使用Java记录器代码的示例语句
logger.error("********* Application Started Successfully *********");
2020-01-29 13:14:00 ERROR [main] com.apptium.Application - main - 64 :[trackId=]|uuid=66d1caaa-17ae-46c9-abf2-28f0da789353|accountName=|appName=|userName=|exceptionIssueCode=EP03NANIL -> UNEXPECTED ERROR|
:errorMessage=********* Application Started Successfully *********
:stackTrace=
从技术上讲,这不是错误消息。根级别被配置为错误。我需要以其他图案打印。我正在使用slf4j。
您可以添加具有不同模式和filter for levels的多个附加程序:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<Pattern>
...
</appender>
<appender name="fout"...
</appender>
<root level="INFO">
<appender-ref ref="FILE" />
<appender-ref ref="fout" />
</root>