使用Spring引导的Logback-在运行时以编程方式更改配置以添加Syslog Appender
我正在构建一个应用程序(Spring Boot 1.4.2),我想为管理员提供启用syslog的选项,但我想避免他/她必须手动编辑任何配置文件——在本例中是使用Spring引导的Logback-在运行时以编程方式更改配置以添加Syslog Appender,spring,spring-boot,logback,slf4j,Spring,Spring Boot,Logback,Slf4j,我正在构建一个应用程序(Spring Boot 1.4.2),我想为管理员提供启用syslog的选项,但我想避免他/她必须手动编辑任何配置文件——在本例中是logstash Spring.xml。 因此,我试图了解如何使用logback spring.xml文件作为基线(例如,定义基于文件的日志选项、级别等-我不希望管理员更改的设置),并在运行时提供管理员可以添加或更改syslog appender的功能 我已经列出了我所看到的要求: 重新启动Spring引导应用程序后,应对记录器所做的更改进行
logstash Spring.xml
。
因此,我试图了解如何使用logback spring.xml
文件作为基线(例如,定义基于文件的日志选项、级别等-我不希望管理员更改的设置),并在运行时提供管理员可以添加或更改syslog appender的功能
我已经列出了我所看到的要求:
logback spring.xml
作为一个常规的xml对象,并使用JAXB来处理该文件,并使用logback的特性来简单地读取新的更改
我已经尝试过定义一个记录器@Bean
:
@Bean
public Logger logger() {
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
// excluded implementation
}
这是由Spring Boot收集的,但这让我想到了上面列出的两项,我不知道如何或在哪里存储管理员提供的syslog服务器信息
更新:
我写了以下满足上述3个要求的内容,但是我非常感谢对实际实现的任何反馈,因为我对Spring和Java非常陌生
我成功地使用了我在指定应用程序中发布的示例,并根据该回购协议中的实施回答了我自己的问题。
请参阅自述文件,了解其实现方式的详细信息
更新:作为Spring Boot 1.5.1的一部分,有一个执行器可以在运行时设置日志记录级别:
不一定与本主题100%相关,但这是我对实现以及更改系统日志相关设置的要求之一。我想,实现首次验收标准的唯一方法是在每次启动应用程序时创建系统日志附加程序。