我正在为我的应用程序使用scalikejdbc库。当我阅读日志时,scalikejdbc会自行生成,它给了我类似的东西:
06:02:16.891 [main] DEBUG scalikejdbc.ConnectionPool$ - Registered connection pool : ConnectionPool(url:jdbc:sqlserver://foo.bar:8080;databaseName=foobar;user=user;password=**PASSWORD**;...
因此scalike本身会将我数据库用户的密码扔到日志中,这是不合适的。
我一直在考虑使用https://logback.qos.ch/manual/filters.html之类的东西完全过滤那些日志,但是我确实需要这些来自scalike的日志中的奇怪信息,因此我无法完全过滤它们。
我现在拥有什么:
06:02:16.891 [main] DEBUG scalikejdbc.ConnectionPool$ - Registered connection pool : ConnectionPool(url:jdbc:sqlserver://foo.bar:8080;databaseName=foobar;user=user;password=somepassword;
我想得到什么:
06:02:16.891 [main] DEBUG scalikejdbc.ConnectionPool$ - Registered connection pool : ConnectionPool(url:jdbc:sqlserver://foo.bar:8080;databaseName=foobar;user=user;password=CENSORED;
答案 0 :(得分:0)
例如,考虑在logback.xml
配置中使用replace
转换词,
%replace(%msg){"password=.*", "password=CENSORED"}
给出了
logger.debug("password=123456")
应该输出类似
[debug] application - password=CENSORED
Docs状态
replace(p){r,t} 用它的正则表达式替换出现的“ r” 字符串中的替换“ t”由子模式“ p”产生。对于 例如,“%replace(%msg){'\ s',``}”将删除所有包含的空格 在事件消息中。
以下是我的logback.xml
的示例:
<configuration>
<conversionRule conversionWord="coloredLevel" converterClass="play.api.libs.logback.ColoredLevel" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%coloredLevel %logger{15} - %replace(%msg){"password=.*", "password=CENSORED"}%n %xException{10}</pattern>
</encoder>
</appender>
<logger name="play" level="INFO" />
<logger name="application" level="DEBUG" />
<logger name="com.gargoylesoftware.htmlunit.javascript" level="OFF" />
<root level="WARN">
<appender-ref ref="STDOUT" />
</root>
</configuration>