使用Spring Boot进行日志记录 - 在运行时以编程方式更改配置以添加Syslog Appender

时间:2017-01-08 21:58:01

标签: spring spring-boot logback slf4j

我正在构建一个应用程序(Spring Boot 1.4.2),我想为管理员提供启用syslog的选项,但我想避免他/她必须手动编辑任何配置文件 - 在这种情况下{{1 }}。 因此,我试图了解如何使用logstash-spring.xml文件作为基线(例如,定义基于文件的日志选项,级别等 - 我不希望管理员更改的设置),并在此基础上提供功能在运行时,管理员可以添加或更改syslog appender。

我列出了我认为的要求:

  1. 重新启动Spring Boot应用程序后,应该保留对Logger所做的更改。
  2. 理想情况下,syslog服务器信息(名称,端口)保存在我的持久层(H2,hibernate)中,但我不确定这是否可行,因为我想在我的持久层之前注入了日志框架?
  3. 我想添加的syslog appender应该由root logger引用,这样我配置的所有日志包都将转到syslog(不确定这是否只是“默认情况下的工作原理”)
  4. 另外我不知道我是否可以简单地将logback-spring.xml视为常规XML对象,并使用例如JAXB来操作该文件并使用Logback的autoscan功能来简单地读取新的更改?

    我一直在定义logback-spring.xml Logger

    @Bean

    Spring Boot正在接受这一点,但这让我看到了上面列出的2个项目,我不知道我将如何或在哪里存储管理员提供的系统日志服务器信息。

    更新

    我编写了以下符合上述3个要求的以下内容,但我会感谢任何有关实际实现的反馈,因为我对Spring和Java都是新手。

    GitHub repository with implementation - spring-boot-logback-syslog

1 个答案:

答案 0 :(得分:1)

我设法使用我在指定应用程序中my Github repo发布的示例,并根据该回购中的实现回答我自己的问题。 有关如何实施的详细信息,请参阅自述文件。

更新:作为Spring Boot 1.5.1的一部分,有一个可在运行期间设置日志记录级别的执行器:Production Ready Loggers
不一定100%与此主题相关,但这是我实施的要求之一以及更改系统日志相关设置。