Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Spring引导的Logback-在运行时以编程方式更改配置以添加Syslog Appender_Spring_Spring Boot_Logback_Slf4j - Fatal编程技术网

使用Spring引导的Logback-在运行时以编程方式更改配置以添加Syslog Appender

使用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引导应用程序后,应对记录器所做的更改进行

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

我已经列出了我所看到的要求:

  • 重新启动Spring引导应用程序后,应对记录器所做的更改进行保留
  • 理想情况下,syslog服务器信息(名称、端口)保存在我的持久层(H2,hibernate)中,但我不确定这是否可行,因为我猜日志框架是在我的持久层之前注入的
  • 我要添加的syslog appender应该由根记录器引用,以便我为其配置日志记录的所有包都将转到syslog(不确定这是否只是“它在默认情况下的工作方式”)
  • 另外,我不知道是否可以简单地将
    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%相关,但这是我对实现以及更改系统日志相关设置的要求之一。

    我想,实现首次验收标准的唯一方法是在每次启动应用程序时创建系统日志附加程序。