登录的SyslogAppender
是否可以使用自定义LayoutBase
扩展名?
我有VedLogLayout:
public class VedLogLayout extends LayoutBase<ILoggingEvent> {
private String version;
@Override
public String doLayout(ILoggingEvent event) {
Prefix prefix = new Prefix();
prefix.version = getVersion();
prefix.name = event.getMessage();
return prefix.toString() + System.lineSeparator();
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
}
和logback.xml:
<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
<syslogHost>localhost</syslogHost>
<facility>LOCAL0</facility>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="com.nws.vedica.model.log.VedLogLayout">
<version>${version}</version>
</layout>
</encoder>
</appender>
,我可以看到logback可以记录到我的rsyslog中,这只是新布局从未更改过的格式。
当我将具有自定义布局的编码器移动到STDOUT控制台附加程序时,它会输出正确的格式,并且我可以测试断点正在使用VedLogLayout
。
那么为什么它不适用于SyslogAppender
?