我想从数据库中动态配置logback.xml值。这是我的logback.xml文件:
<configuration>
<appender name="KIWI" class="ch.qos.logback.classic.net.SyslogAppender">
<syslogHost>localhost:8080</syslogHost>
<facility>LOCAL0</facility>
<suffixPattern>%thread: %-5level %logger{36} - %msg%n</suffixPattern>
</appender>
<logger name="com.javacodegeeks.examples.logbacksyslogexample.message.kiwi" level="INFO">
<appender-ref ref="KIWI" />
</logger>
</configuration>
我想从数据库中获取syslog主机名信息,而不是直接在这里硬编码。有可能吗?
先谢谢你。
1条答案
按热度按时间holgip5t1#
正如我在评论中提到的,我认为在数据库中存储日志配置不是一个好主意。如果我理解正确,您关心的是如何根据某些变量更改appender配置。这可以通过使用mdc过滤器或从服务属性读取值来解决。
如果您想从application.yml或env vars中读取一些值,可以简单地使用spring表达式。
但是,如果您想要更大的灵活性和控制能力,可以使用mdc过滤器,在这里您可以设置任何您想要的内容并将其传递给logback配置。
http://logback.qos.ch/apidocs/ch/qos/logback/classic/turbo/mdcfilter.html
在下面的链接中,您可以看到如何Map和基本使用mdc进行logback:https://www.baeldung.com/mdc-in-log4j-2-logback
下面是我如何使用mdc过滤器的示例。基本上,根据请求到达时登录的组织,我解析了请求并将其设置在mdc中,然后在写入日志时可以通过logback读取它。
java配置:
logback.xml: