0

我正在研究记录器的实现,并尝试使用错误级别日志以不同的模式打印记录器语句。

这是用于打印记录器的 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 代码的示例语句

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= 

从技术上讲,这并没有错误信息。根级别配置为 ERROR。我需要以不同的模式打印。我正在使用 slf4j。

4

1 回答 1

0

You can add multiple appender with different patterns and 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>

https://stackoverflow.com/a/5653532/9928822

于 2020-01-29T15:46:34.290 回答