项目上线时,需要对项目做安全检查,其中有两项是对输出日志进行分类和过滤掉日志中敏感字段。
项目使用Log4j日志系统,下面简单介绍下这两项要求的实现方式。
- 对日志进行分类,要求调用其他服务的API日志按照格式单独输出到一个文件。
方式: 除根Logger外,再额外增加一个apiLogger,如下,
<!-- api logger的设置-->
<logger name="log4j.logger.apiLogger" additivity="false">
<level value ="INFO"/>
<appender-ref ref="apiConsoleAppender"/>
<appender-ref ref="apiMsgOutGoingAppender"/>
</logger>
<!-- 根logger的设置-->
<root>
<level value ="INFO"/>
<appender-ref ref="ConsoleAppender"/>
<appender-ref ref="DailyRollingFileAppender"/>
</root>
注: (1) additivity设为false,则root中的配置就失效了。即使用root配置的日志不会在apiLogger的文件中出现;
(2) 每种logger指定两个appender,分别是在debug console和Linux 服务器日志文件中显示。
根日志的ConsoleAppender和DailyRollingFileAppender的配置如下:
<appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
<!-- 设置日志输出的样式 -->
<layout class="org.apache.log4j.PatternLayout">
<!-- 设置日志输出的格式 -->
<param name="ConversionPattern" value="**** [%p] [%d{yyyy/MM/dd HH:mm:ss:SSS}] ******************************%n[Thread] %t%n[Class] %C%n[Method] %M%n[Message] %m%n%n" />
</layout>
</appender>
<appender name=