Я реализовал Logback в Spring Java Config, используя версию 0.1.4 logback-ext-spring. Мой ConsoleAppender, кажется, работает. Но хотя указанный файл журнала RollingFileAppender создается (log.log) и блокируется во время работы приложения, запись в него никогда не выполняется.
Вот полный класс. Как видите, я настроил его как @Configuration и автоматически соединяю компоненты вместе. Эта часть, похоже, работает, так как я могу отладить, что все подключается нормально.
Я передаю RollingFileAppender в AsyncAppender, но удаление этого, похоже, не меняет результатов.
@Configuration
public class LogbackConfig {
@Autowired
private LoggerContext loggerContext;
@Autowired
private PatternLayoutEncoder patternLayoutEncoder;
@Autowired
private ConsoleAppender consoleAppender;
@Autowired
private RollingFileAppender rollingFileAppender;
@Bean
public ApplicationContextHolder applicationContextHolder() {
return new ApplicationContextHolder();
}
@Bean
public LoggerContext loggerContext() {
return (LoggerContext) LoggerFactory.getILoggerFactory();
}
@Bean(initMethod = "start", destroyMethod = "stop")
public PatternLayoutEncoder encoder() {
PatternLayoutEncoder encoder = new PatternLayoutEncoder();
encoder.setContext(loggerContext);
encoder.setPattern(".%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg %n");
return encoder;
}
@Bean(initMethod = "start", destroyMethod = "stop")
public ConsoleAppender consoleAppender() {
ConsoleAppender consoleAppender = new ConsoleAppender();
consoleAppender.setContext(loggerContext);
consoleAppender.setEncoder(patternLayoutEncoder);
return consoleAppender;
}
@Bean(initMethod = "start", destroyMethod = "stop")
public RollingFileAppender rollingFileAppender() {
RollingFileAppender fileAppender = new RollingFileAppender();
fileAppender.setContext(loggerContext);
fileAppender.setFile("/logs/spring/log.log");
fileAppender.setEncoder(patternLayoutEncoder);
TimeBasedRollingPolicy<Object> policy = new TimeBasedRollingPolicy<>();
policy.setContext(loggerContext);
policy.setParent(fileAppender);
policy.setFileNamePattern("%d{HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n");
fileAppender.setRollingPolicy(policy);
return fileAppender;
}
@Bean (initMethod = "start", destroyMethod = "stop")
public AsyncAppender asyncAppender () {
AsyncAppender asyncAppender = new AsyncAppender();
asyncAppender.setContext(loggerContext);
asyncAppender.setQueueSize(500);
asyncAppender.addAppender(rollingFileAppender);
return asyncAppender;
}
}