log4j2.1使用指南[一] java工程

时间:2021-01-06 21:50:37

在java工程下使用log4j2很简单,首先需要下载,地址为:logging.apache.org,然后选择log4j 2.x的版本进去下载就可以了。

需要用到的jar包:log4j-core-2.1.jar,log4j-api-2.1.jar

log4j2的使用也和1.x基本上差不多

private  static Logger log = LogManager.getLogger(LogTest.class);

日志级别:

                trace: 是追踪,就是程序推进以下,你就可以写个trace输出,所以trace应该会特别多,不过没关系,我们可以设置最低日志级别不让他输出。

    debug: 调试么,我一般就只用这个作为最低级别,trace压根不用。是在没办法就用eclipse或者idea的debug功能就好了么。

    info: 输出一下你感兴趣的或者重要的信息,这个用的最多了。

    warn: 有些信息不是错误信息,但是也要给程序员的一些提示,类似于eclipse中代码的验证不是有error 和warn(不算错误但是也请注意,比如以下depressed的方法)。

    error: 错误信息。用的也比较多。

    fatal: 级别比较高了。重大错误,这种级别你可以直接停止程序了。

日志调用方法:

public static void tests(){
        for(int i=0;i<10000;i++){
            log.trace("测试级别trace");
            log.warn("测试级别:warn");
            log.debug("方法测试");
            log.error("方法发生错误,test");
        }
        
    }

控制台打印的日志信息为:

2014-12-24 14:30:58 CST ERROR org.test1.LogTest 13 tests - 方法发生错误,test
2014-12-24 14:30:58 CST WARN  org.test1.LogTest 11 tests - 测试级别:warn
2014-12-24 14:30:58 CST DEBUG org.test1.LogTest 12 tests - 方法测试
2014-12-24 14:30:58 CST ERROR org.test1.LogTest 13 tests - 方法发生错误,test
2014-12-24 14:30:58 CST WARN  org.test1.LogTest 11 tests - 测试级别:warn
2014-12-24 14:30:58 CST DEBUG org.test1.LogTest 12 tests - 方法测试
2014-12-24 14:30:58 CST ERROR org.test1.LogTest 13 tests - 方法发生错误,test
2014-12-24 14:30:58 CST WARN  org.test1.LogTest 11 tests - 测试级别:warn
2014-12-24 14:30:58 CST DEBUG org.test1.LogTest 12 tests - 方法测试
2014-12-24 14:30:58 CST ERROR org.test1.LogTest 13 tests - 方法发生错误,test

log4j2的配置文件可以使用多种方法,包括xml/json等,这里使用的xml,xml的名称为log4j2.xml,路径位于src下,

<?xml version="1.0" encoding="UTF-8"?>
<!-- status="OFF",可以去掉,它的含义为是否记录log4j2本身的event信息,默认是OFF -->
<configuration status="OFF">
    <!-- 定义下面的引用名 -->
    <Properties>
        <property name="log_pattern">%d{yyyy-MM-dd HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n</property>
        <property name="file_name">logs/app.log</property>
        <property name="rolling_file_name">logs/app-%d{yyyy-MM-dd}-%i.log.gz</property>
        
        <property name="every_file_size">10M</property><!-- 日志切割的最小单位 -->
        <property name="output_log_level">debug</property><!-- 日志输出级别 -->
    </Properties>

    <!--先定义所有的appender-->
    <appenders>
        <!--这个输出控制台的配置-->
        <Console name="Console" target="SYSTEM_OUT">
            <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
            <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
            <!--这个都知道是输出日志的格式-->
            <PatternLayout pattern="${log_pattern}"/>
        </Console>

        <!--这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
       <!-- 按月生成归档日志,可以使用 filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz" -->
        <RollingFile name="RollingFile" fileName="${file_name}"
                     filePattern="${rolling_file_name}">
            <PatternLayout pattern="${log_pattern}"/>
            <SizeBasedTriggeringPolicy size="${every_file_size}"/>
        </RollingFile>
        
        <!--如果需要配置多个Rollingfile地址,还需要在root下添加appender-ref ref="RollingFile1"/>  
         <RollingFile name="RollingFile1" fileName="logs/app1.log"
                     filePattern="logs/app1-%d{yyyy-MM-dd}-%i.log.gz">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <SizeBasedTriggeringPolicy size="10MB"/>
        </RollingFile>
         -->
    </appenders>
    <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
    <loggers>
        <!--建立一个默认的root的logger,需要在root的level中指定输出的级别,-->
        <root level="${output_log_level}">
            <appender-ref ref="RollingFile"/>
            <appender-ref ref="Console"/>
        </root>

    </loggers>
</configuration>

其中appender的解释,可以参照:http://blog.csdn.net/seven_zhao/article/details/42124073,写的很详细。

范例demo下载地址:http://download.csdn.net/detail/seven_zhao/8294653