Logback的DBAppender将其上下文和MDC中的所有属性记录到数据库中。我想控制记录哪些属性,特别是过滤掉某些值,但我找不到任何选项来执行此操作。文档很简洁:
logging_event_property用于存储MDC或Context中包含的键和值
是否可以排除某些属性被记录?
以下是一个例子:
Logback配置了DBAppender
,可以从vct.properties
加载其属性:
<configuration>
<property resource="vct.properties" />
<appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
<connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
<dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
<driverClass>com.mysql.jdbc.Driver</driverClass>
<jdbcUrl>jdbc:mysql://${log.db.host}:${log.db.port}/${log.db.schema}</jdbcUrl>
<user>${log.db.username}</user>
<password>${log.db.password}</password>
</dataSource>
</connectionSource>
</appender>
<root level="DEBUG">
<appender-ref ref="DB" />
</root>
</configuration>
vct.properties
具有连接设置:
log.db.host=localhost
log.db.port=3306
log.db.schema=logs_development
log.db.username=loguser
log.db.password=logpass
记录事件时,将记录所有连接设置:
mysql> select * from logging_event_property where event_id=1;
+----------+---------------------+-------------------------------------------+
| event_id | mapped_key | mapped_value |
+----------+---------------------+-------------------------------------------+
| 1 | log.db.host | localhost |
| 1 | log.db.password | logpass |
| 1 | log.db.port | 3306 |
| 1 | log.db.schema | logs_development |
| 1 | log.db.username | loguser |
+----------+---------------------+-------------------------------------------+
答案 0 :(得分:2)
Logback目前不支持此功能。如果您尚未输入请求此功能的错误报告。
答案 1 :(得分:0)
作为过滤哪些条目添加到数据库的替代方法,我编写了一个Java程序,将logback dbappender数据库列出到控制台,该控制台也支持过滤。
答案 2 :(得分:0)
这些天,我们也遇到了类似的错误。就我而言,我是通过
导入属性的<springProperty ...>
定义。当springProperty的范围设置为“ context”时,它将自动添加到“ logging_event_property”表中。通过删除范围(默认为本地),不再添加springProperties:-)