根据日志定位问题的时候,如果所有的日志都打到一个日志文件里,查问题就很不直观了。
一、指定某个路径的包或类打到单独的日志文件
log4j.xml 配置如下:
<appender name="poll" class="org.apache.log4j.DailyRollingFileAppender">
<param name="encoding" value="UTF-8" />
<param name="File" value="/export/Logs/im.**.com/poll.log" />
<param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %t %5p [%c:%L] - %m%n" />
</layout>
</appender>
<category name="com.**.im.tracker.web.servlet.DomainListServlet" additivity="false">
<level value="ERROR" />
<appender-ref ref="poll" />
<appender-ref ref="CONSOLE" />
</category>
appender定义了一个日志文件输出源。category的name字段指定了要单独大日志的包或类的路径,子字段的appender-ref则定义了这个包用哪几个日志文件输出源。
二、指定某个特殊功能的日志打到独立的日志文件
有时候,一个类很大,日志也很多,但是这个类里的某行或某几行日志特别重要,需要单独打到一个日志文件里观察。这个时候需要用另外一种配置。
首先需要在java代码里单独配置一个logger
private static final Logger LINKLOGGER = LoggerFactory.getLogger("LinkLogger");
然后打日志的之后用这个logger打日志。
对应的log4j配置文件配置如下:
<appender name="link" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="/export/Logs/im.**.com/link.log" />
<param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %t %5p [%c:%L] - %m%n" />
</layout>
</appender>
<logger name="LinkLogger" additivity="false">
<level value="info" />
<appender-ref ref="link" />
</logger>
这样配置好后,用LINKLOGGER打的日志就会打到link.log里了。