我已经创建了一个自定义 PatternLayout,我在 logback 的 Access 和 File appender 中使用它,我也想将它用于 LoggingEventCompositeJsonEncoder。
是否可以使用我的布局配置编码器,我该如何实现?
文件 appender 配置示例:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="com.me.util.logging.PatternLayoutFiltered">
<pattern>${LOG_PATTERN}</pattern>
</layout>
</encoder>
<file>${LOG_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rotate every day -->
<fileNamePattern>${logback.rollingPolicy.file.fileNamePattern}</fileNamePattern>
<!-- Days of history -->
<maxHistory>${logback.maxHistory.retention:-7}</maxHistory>
</rollingPolicy>
</appender>
我的logstash编码器:
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp>%d{ISO8601}</timestamp>
<message/>
<loggerName/>
<context/>
<mdc/>
<pattern>
<pattern>
{
"appVersion": "${build.version}",
"appName": "${build.artifact}",
"resourceType": "${logback.application.resource.type}",
"resourceID": "${logback.application.resource.id}",
"level": "%level",
"hostname": "${logback.server.host}",
"indexType": "${logback.logstash.index.type}"
}
</pattern>
</layout>
</pattern>
<stackTrace/>
</providers>
</encoder>
我在哪里可以在这里定义相同的 PatternLayout ?我在这里读过
模板中的每个值都被视为 logback 标准 PatternLayout 的模式,因此它可以是文字字符串(对于某些常量)和各种转换说明符(如 %d 表示日期)的组合。
那么我如何配置我自己的呢?谢谢你的帮助。