Log4j的简单配置及使用方法

时间:2021-06-22 21:56:01

第一步、导入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.propertieslog4j.xml这两个配置文件的名称,它们的名称最好不要随意改动,另外,我们还需要把这两个文件放在项目的根目录下,WEB-INF/classes目录下,否则Log4j可能会无法识别出配置文件从而导致日志信息无法写入文件。

    特别注意:如果WEB-INF/classes目录下同时出现log4j.propertieslog4j.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);
}
}

    然后通过 静态类.方法 这种调用形式就可以直接输出日志信息了。