java開發-log4j2配置使用


基礎內容

Apache Log4j 2是對Log4j的升級,它比其前身Log4j 1.x提供了重大改進,並提供了Logback中可用的許多改進,同時修復了Logback架構中的一些固有問題。

 

代碼部分

S1.添加到項目

下載log4j2 jar包

https://logging.apache.org/log4j/2.x/download.html

添加log4j-api-2.9.0.jar/log4j-core-2.9.0.jar包到工程libs目錄,add as library;

S2. 配置log4j2

src目錄下新建log4j2.xml並配置;

一個完整的配置示例:

<?xml version="1.0" encoding="UTF-8"?>

<configuration status="error">

    <!--先定義所有的appender-->

    <appenders>

        <!--這個輸出控制台的配置-->

        <Console name="Console" target="SYSTEM_OUT">

            <!--控制台只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch)-->

            <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>

            <!--這個都知道是輸出日志的格式-->

            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>

        </Console>

        <!--文件會打印出所有信息,這個log每次運行程序會自動清空,由append屬性決定,這個也挺有用的,適合臨時測試用-->

        <File name="log" fileName="log/test.log" append="false">

            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>

        </File>

 

        <!--這個會打印出所有的信息,每次大小超過size,則這size大小的日志會自動存入按年份-月份建立的文件夾下面並進行壓縮,作為存檔-->

        <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>

    <!--然后定義logger,只有定義了logger並引入的appender,appender才會生效-->

    <loggers>

        <!--建立一個默認的root的logger-->

        <root level="trace">

            <appender-ref ref="RollingFile"/>

            <appender-ref ref="Console"/>

        </root>

    </loggers>

</configuration>

 

 

 

S3.使用

//官方提供的示例

//java

package com.example;

 

import org.apache.logging.log4j.Logger;

import org.apache.logging.log4j.LogManager;

 

public class Example {

    private static final Logger LOGGER = LogManager.getLogger();

 

    public static void main(String... args) {

        String thing = args.length > 0 ? args[0] : "world";

        LOGGER.info("Hello, {}!", thing);

        LOGGER.debug("Got calculated value only if debug enabled: {}", () -> doSomeCalculation());

    }

 

    private static Object doSomeCalculation() {

        // do some complicated calculation

    }

}

// 配置規則

<?xml version="1.0" encoding="UTF-8"?>

<Configuration>

  <Appenders>

    <Console name="Console" target="SYSTEM_OUT">

      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>

    </Console>

  </Appenders>

  <Loggers>

    <Logger name="com.example" level="INFO"/>

    <Root level="error">

      <AppenderRef ref="Console"/>

    </Root>

  </Loggers>

</Configuration>

 

 

//示例2

Logger logger = LogManager.getLogger(xxx.class.getName() + ".class");

        logger.trace("我是trace信息");

        logger.debug("我是debug信息");

        logger.info("我是info信息");    //info級別的信息

        logger.warn("我是warn信息");

        logger.error("Did it again!");   //error級別的信息,參數就是你輸出的信息

        logger.fatal("我是fatal信息");

 

 

Ref:

1. https://github.com/apache/logging-log4j2

2.http://blog.csdn.net/lu8000/article/details/25754415


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM