Могу ли я запретить DBAppender logback регистрировать определенные свойства? - PullRequest
3 голосов
/ 15 апреля 2010

Logback DBAppender записывает все свойства в своем контексте и MDC в базу данных. Я хотел бы контролировать, какие свойства регистрируются, в частности отфильтровывать определенные значения, но я не могу найти какие-либо варианты для этого. Документация краткая:

logging_event_property используется для хранения ключей и значений, содержащихся в MDC или контексте

Можно ли исключить определенные свойства из журнала?

Вот пример:

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                                   | 
+----------+---------------------+-------------------------------------------+

Ответы [ 3 ]

2 голосов
/ 21 апреля 2010

Logback в настоящее время не поддерживает эту функцию. Если вы этого еще не сделали, введите отчет об ошибке, запрашивающий эту функцию.

0 голосов
/ 25 июня 2019

В эти дни спотыкался и о подобной ошибке. В моем случае я импортировал свойства через

<springProperty ...> 

определение. Когда область SpringProperty установлена ​​в «контекст», она будет автоматически добавлена ​​в таблицу «logging_event_property». При удалении области видимости (по умолчанию локально) SpringProperties больше не добавляются: -)

0 голосов
/ 11 ноября 2015

В качестве альтернативы фильтрации того, какие записи добавляются в базу данных, я написал Java-программу для вывода базы данных dbappender на консоль, которая также поддерживает фильтрацию.

https://github.com/Rockvole/db_logviewer

...