Я создаю приложение (Spring Boot 1.4.2), где я хотел бы предложить администратору возможность включить syslog, но я хочу избежать его/ее необходимо вручную отредактировать любые файлы конфигурации - в этом случае logstash-spring.xml
. Поэтому я пытаюсь понять, как я могу добиться использования файла logback-spring.xml
в качестве базовой линии (например, определить параметры журнала на основе файлов, уровни и т. Д. - настройки, которые я не хочу, чтобы администратор менял), и, кроме того, они обеспечивают функциональность во время выполнения, администратор может добавить или изменить приложение syslog.Logback with Spring Boot - программно изменить конфигурацию во время выполнения, чтобы добавить Syslog Appender
я перечислил то, что я вижу, как требования:
- Изменение, внесенное в Logger должно быть сохранен после того, как приложение Spring загрузки перезапуска.
- В идеале информация сервера syslog (имя, порт) хранится в моем уровне персистентности (H2, hibernate), но я не уверен, что это возможно, так как я предполагаю, что кадровая система вводится до моего уровня персистентности?
- системного журнала Appender, что я хочу, чтобы добавить должна быть ссылка на корневой регистратор, так что все пакеты я настроившие протоколирования бы в системный журнал (не уверен, если это просто «как он работает по умолчанию»)
Также я не знаю, могу ли я просто обрабатывать logback-spring.xml
в качестве обычного объекта XML и использовать, например, JAXB для управления этим файлом и использовать функцию резервного копирования autoscan для простого чтения в новых изменениях?
Я играл с определением Logger
@Bean
:
@Bean
public Logger logger() {
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
// excluded implementation
}
Это время подобрано Spring ботинком, но это подводит меня к 2 пунктам я перечислил выше, что я не знаю, как и где я бы сохраните информацию сервера syslog, которую предоставит администратор.
UPDATE:
я написал следующее, который отвечает требованиям 3 выше, однако я был бы признателен за любую обратную связь о фактической реализации, как я очень новой для Spring и Java.
GitHub repository with implementation - spring-boot-logback-syslog
Я предполагаю, что единственный способ достичь первых критериев приемки - создать сборщик syslog при каждом запуске приложения. –