log4j2使用笔记

最近项目经常在使用调试,挂在服务器上有时候很多错误System.out输出,在tomcat控制台间隔太久时间就看不到了。就想到log4j。


首先下载最新版本的log4j,现在是2.0。打开 http://logging.apache.org/log4j/2.x/download.html 下载 apache-log4j-2.0-rc1-bin.zip

之后吧压缩包里面的log4j-api-2.0.rc1.jarlog4j-core-2.0-rc1.jar两个必须的包拷贝到项目下面。再选择两个jar右击Add to build path添加到项目中。

之后编写代码:

package log4jDemo;

import java.util.logging.Level;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class HelloWorld {
    
    private static Logger logger = LogManager.getLogger(HelloWorld.class);
    
    public static void main(String[] args) {
        logger.entry();
        logger.info("Info Test");
        logger.error("Error Test");
        logger.debug("debug Test");
        logger.exit();
    }
}

 

输出结果

 

只显示了error的记录。 因为log4j默认设置等级为error,其他等级低的信息不会打印。所以接下来要写配置文件(设置记录等级,设置写到XX文件等)


配置文件2.0只能使用 xml或者json的方式。

我这里使用xml


在项目src目录下面建立 log4j2.xml  文件名固定的!

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
    <appenders>
        <!-- 设置输出格式   -->
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>
        <!-- 设置将信息输入到logs目录下的app.log -->
        <RollingFile name="RollingFile" fileName="logs/app.log"
                     filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <SizeBasedTriggeringPolicy size="50MB"/>
        </RollingFile>
    </appenders>
    <loggers>
        <!-- 
            设置等级,error则显示>=error等级的错误,debug则显示>=debug等级的错误(显示debug info error...)
            级别顺序(高到低):FATAL > ERROR > WARN >INFO > DEBUG
            FATAL level指出每个严重的错误事件将会导致应用程序的退出。  
            ERROR level指出虽然发生错误事件,但仍然不影响系统的继续运行。  
            WARN level表明会出现潜在错误的情形。  
            INFO level表明 消息在粗粒度级别上突出强调应用程序的运行过程。   
            DEBUG Level指出细粒度信息事件对调试应用程序是非常有帮助的。  
        -->
        <root level="debug">
            <!-- 添加上方配置的输出格式Console以及输出到文件RollingFile -->
            <appender-ref ref="Console" />
             <appender-ref ref="RollingFile"/>
        </root>
    </loggers>
</configuration>

 

现在运行输出结果:

 

然后项目下自动生成logs目录及app.log文件
app.log文件内容

若需要关闭log4j功能,则将log4j2.xml中 将 level="OFF" 设置为off则log4j不再记录

<root level="OFF">
            <!-- 添加上方配置的输出格式Console以及输出到文件RollingFile -->
            <appender-ref ref="Console" />
            <appender-ref ref="RollingFile"/>
 </root>

 

posted @ 2014-04-18 13:55  koik  阅读(292)  评论(0编辑  收藏  举报