带有弹簧属性占位符的 Spring Boot 和 Logback logging.config 文件

Posted

技术标签:

【中文标题】带有弹簧属性占位符的 Spring Boot 和 Logback logging.config 文件【英文标题】:Spring Boot and Logback logging.config file with spring properties placeholders 【发布时间】:2017-08-23 15:02:20 【问题描述】:

我在服务器上安装了一组应用程序,我想开始通过 syslog 将日志发送到远程 Logstash 服务器。为此,我创建了一个外部 Logback 配置文件,其中包含一个指向所需远程服务器的 SyslogAppender。

由于多个应用程序将登录到同一台服务器,我已将日志模式更改为如下:

<suffixPattern>%dyyyy-MM-dd HH:mm:ss.SSS [$server_instance] [$application_name] %p $PID:-  --- [%15.15t] %logger : %m%n</suffixPattern>

其中 server_instanceapplication_name 是启动时提供的命令行选项参数。

现在我只需将所有应用程序的 logging.config 属性设置为指向同一个 Logback 配置文件,然后所有应用程序都开始使用指定的模式将日志发送到所需的服务器。这部分就像一个魅力。

但我遇到的唯一问题是 Logback 无法确定 server_instanceapplication_name 属性,它们显示为 [server_instance_IS_NOT_DEFINED] 和 [application_name_IS_NOT_DEFINED] 分别。

我可以使用单个外部配置文件以某种方式实现这一点吗?

【问题讨论】:

【参考方案1】:

Logback 无法看到命令行参数;那些只有Spring才能看到。

将这些命令行选项参数移至系统属性(即“-Dserver_instance”和“-Dapplication_name”而不是“--server_instance” >”和“--application_name”),现在一切都按预期工作了。

【讨论】:

以上是关于带有弹簧属性占位符的 Spring Boot 和 Logback logging.config 文件的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 配置属性的未解决占位符验证

在运行时使用 intellij 在 Spring boot application.yml 文件中注入占位符值

在 Spring Boot 中使用 jdbcTemplate 执行具有动态占位符的 HANA 查询

Spring Boot 表单;隐藏路径值并显示占位符

Spring Boot如何选择外部化的弹簧属性文件

spring-boot 弹簧安全 angularjs