我的最终目标是在Spring启动应用中使用我的自定义appender。如果我直接在logback.xml中引用了appender,appender需要自动连接另一个无效的变量。我找到了有关spring https://github.com/qos-ch/logback-extensions/wiki/Spring的logback扩展的阅读材料。我试图遵循指示,但自定义appender没有实例化。日志显示DelegatingLogbackAppender确实已创建,但我不知道为什么它没有与我的appender链接。
这是我的logback.xml:
<configuration debug="true">
<appender name="rabbitmqAppender" class="ch.qos.logback.ext.spring.DelegatingLogbackAppender"/>
<root level="INFO">
<appender-ref ref="rabbitmqAppender"/>
</root>
</configuration>
这是我的Spring配置代码(更少的导入行):
@Configuration
public class LogbackConfig
{
@Bean
public static ApplicationContextHolder applicationContextHolder() {
return new ApplicationContextHolder ();
}
@Bean
public static LoggerContext loggerContext() {
return (LoggerContext) LoggerFactory.getILoggerFactory();
}
@Bean (initMethod = "start", destroyMethod = "stop")
public static PatternLayoutEncoder encoder (LoggerContext ctx) {
PatternLayoutEncoder encoder = new PatternLayoutEncoder();
encoder.setContext(ctx);
encoder.setPattern("%date %-5level [%thread] %logger{36} %m%n");
return encoder;
}
@Bean (initMethod = "start", destroyMethod = "stop")
public static RabbitMQAppender rabbitmqAppender(LoggerContext ctx, PatternLayoutEncoder encoder) {
RabbitMQAppender appender = new RabbitMQAppender();
appender.setContext(ctx);
return appender;
}
}
我还尝试使用doc示例中显示的ConsoleAppender。它没有在控制台中显示任何日志行。