最近在分析项目响应时延时,使用了很多打印日志的技巧,下面总结一下。
1、打印总的日志。
总日志是说,在系统出现任何异常或错误情况,都将异常打印到固定文件中。实现方式:
1、实现类中,添加日志对象
private static final Logger LOGGER = LoggerFactory.getLogger(SpeechManagerImpl.class);
getLogger里面填类名。
2、log4j.xml里加入这一段
<appender name="mainlog" class="org.apache.log4j.DailyRollingFileAppender"> <param name="Encoding" value="UTF-8" /> <param name="File" value="/home/cxb/logs/smartchome.log" /> <param name="DatePattern" value="'-'yyyy-MM-dd" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH\:mm\:ss,SSS} %5p [%t] (%F\:%L) - %m%n" /> </layout> </appender><root> <priority value="ERROR" /> <appender-ref ref="mainlog" /> <appender-ref ref="console" /> </root>
主要日志级别设置为ERROR,说明只打error级别日志。这时,java代码中,只有error或更严重的才会打印出。
2、打印模块化日志。
这个也是比较常用的,用于将关键模块的日志单独打印到文件中。实现方式:
1、实现类中,添加日志对象
private static final Logger log = LoggerFactory.getLogger("nlptransaction");
2、log4j中加入以下一段
<category additivity="false" name="nlptransaction"> <level value="INFO"/> <appender-ref ref="nlptranslog"/> </category><appender name="nlptranslog" class="org.apache.log4j.DailyRollingFileAppender"> <param name="Encoding" value="UTF-8" /> <param name="File" value="/home/cxb/logs/nlptrans.log" /> <param name="DatePattern" value="'-'yyyy-MM-dd" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH\:mm\:ss,SSS} %5p [%t] (%F\:%L) - %m%n"/> </layout> </appender>
这样,在需要单独打印的地方,就实现了单独的日志打印。