5

Logback 的 DBAppender 将其上下文和 MDC 中的所有属性记录到数据库中。我想控制记录哪些属性,特别是过滤掉某些值,但我找不到这样做的任何选项。文档很简洁:

logging_event_property 用于存储 MDC 或 Context 中包含的键和值

是否可以从记录中排除某些属性?

这是一个例子:

Logback 配置了从以下位置DBAppender加载其属性的a 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                                   | 
+----------+---------------------+-------------------------------------------+
4

3 回答 3

3

Logback 目前不支持此功能。如果您还没有,请输入请求此功能的错误报告。

于 2010-04-21T13:32:31.563 回答
2

这些天也因类似的错误而跌跌撞撞。就我而言,我通过以下方式导入了属性

<springProperty ...> 

定义。当 springProperty 的范围设置为“context”时,它将自动添加到“logging_event_property”表中。通过删除范围(默认为本地),不再添加 springProperties :-)

于 2019-06-25T14:21:34.383 回答
0

作为过滤哪些条目添加到数据库的替代方法,我编写了一个 Java 程序来将 logback dbappender 数据库列出到也支持过滤的控制台。

https://github.com/Rockvole/db_logviewer

于 2015-11-11T00:21:54.007 回答