第一步、导入jar包
把commons-logging.jar 和log4j-1.2.15.jar 这两个Jar包导入到项目的WebRoot\WEB-INF\lib目录下,这样我们才能在程序中正常输出日志。
第二步、编写log4j的配置文件
这里有两种形式的配置方,,properties格式和xml格式,对于properties格式的配置文件,log4j会把所有的日志信息输出到同一个日志文件中,而xml格式的配置文件则可以根据日志的不同级别,将他们输出到不同的日志文件中去,针对这两种特征,在不同的阶段,我们可以选择使用不同的配置文件,通常在开发阶段,我们会选择properties格式的配置文件,而当系统上线的时候,我们再改成xml格式的配置文件,下面来看下示例配置:
log4j.properties配置
#1、配置日志的输出级别及去向
log4j.rootLogger=debug,appenderA
#2、配置日志的生成方式,是输出到控制台还是输出到某个文件
log4j.appender.appenderA=org.apache.log4j.DailyRollingFileAppender
log4j.appender.appenderA.Encoding=UTF-8
#3、配置日志信息的具体输出目录
log4j.appender.appenderA.File=f:/logs/mylogs.log
#4、每天产生一个新的日志文件,前一天的日志文件名为mylogs.log.yyyy-MM-dd
log4j.appender.A4.DatePattern='.'yyyy-MM-dd
#5、配置日志信息的显示布局
log4j.appender.appenderA.layout=org.apache.log4j.PatternLayout
#6、配置日志信息的输出格式
log4j.appender.appenderA.layout.ConversionPattern=[%d{yyy-MM-dd HH:mm:ss}][%5p][CLASS_NAME:%c]{FILE_NAME:%F(LINE:%L)} - %m%n
log4j.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<!--将级别为DEBUG的信息输出到文件-->
<appender name="LOG.DEBUG"class="org.apache.log4j.RollingFileAppender">
<param name="File" value="f:/log/debug.log" />
<!-- 设置服务器重启时,是否在原有日志的基础上添加新日志 -->
<param name="Append" value="true" />
<param name="MaxFileSize" value="5120KB" />
<param name="MaxBackupIndex" value="10" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyy-MM-dd HH:mm:ss}][%5p][CLASS_NAME:%c]{FILE_NAME:%F(LINE:%L)} - %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="DEBUG" />
</filter>
</appender>
<root>
<!-- priority属性设置日志输出的最低级别 -->
<priority value="DEBUG"/>
<!-- 设置输出通道,注释后与之对应的级别日志将不会被输出 -->
<!-- appender-ref标签的ref属性值与appender标签的name属性值相对应-->
<appender-ref ref="LOG.DEBUG" />
</root>
</log4j:configuration>
如果想配置其它级别的日志信息输出到其它地方,我们可以增加appender标签,然后修改过滤器中的日志级别即可。同时log4j.xml的配置文件还需要一个log4j.dtd文件,这两个文件要放在同级目录下。
注意log4j.properties和log4j.xml这两个配置文件的名称,它们的名称最好不要随意改动,另外,我们还需要把这两个文件放在项目的根目录下,即WEB-INF/classes目录下,否则Log4j可能会无法识别出配置文件从而导致日志信息无法写入文件。
特别注意:如果WEB-INF/classes目录下同时出现log4j.properties和log4j.xml文件,Log4j组件会优先选择log4j.xml作为他的配置文件。
第三步、输出日志信息
首先,初始化一个org.apache.log4j.Logger对象,
Logger logger = Logger.getLogger(类名.class);
然后通过logger对象的debug () ; info () ; warn () ; error ()方法就可以输出日志信息到对应的文件中了。
但这样做似乎有点麻烦,因为每次在输出日志前都要先生成一个对象,那么有没有一种方法来减少这种麻烦呢?我们可以通过静待化机制来简化Logger对象的操作,具体为编写一个静态类,如下:
public class LogUtil {
private static Logger logger = Logger.getLogger(LogUtil.class);
public static void debug(Object obj){
logger.debug(obj);
}
public static void info(Object obj){
logger.info(obj);
}
public static void warn(Object obj){
logger.warn(obj);
}
public static void error(Object obj){
logger.error(obj);
}
public static void fatal(Object obj){
logger.fatal(obj);
}
}
然后通过 静态类.方法 这种调用形式就可以直接输出日志信息了。