log4j/log4j2/logback簡(jiǎn)單使用說(shuō)明


環(huán)境準(zhǔn)備

開(kāi)發(fā)工具:IntelliJ IDEA
項(xiàng)目構(gòu)建工具:maven 3.6.0
JDK版本:1.8

代碼地址

log4jdemo
log4j2demo
logbackdemo
logdemo


log4j

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

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.example</groupId>
    <artifactId>log4jdemo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <name>log4jdemo</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
    </dependencies>
</project>

Main.java
package com.mac2099.log4j;

import org.apache.log4j.Logger;

/**
 * Hello world!
 */
public class Main {
    static final Logger LOGGER = Logger.getLogger(Main.class);

    public static void main(String[] args) {
        LOGGER.info("log4j demo");
    }
}
log4j.properties
log4j.rootLogger=INFO,console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] %c: %m%n
運(yùn)行結(jié)果
2021-10-11 22:21:20 [INFO] com.mac2099.log4j.Main: log4j demo
log4j.properties打印日志到控制臺(tái)和磁盤(pán)文件的配置參考
# 日志級(jí)別,appendName1,appendName2,......
log4j.rootLogger=INFO,console,logFile

#打印日志到控制臺(tái)
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] %c: %m%n

#打印日志到/Users/mac2099/temp/mylog.log
log4j.appender.logFile=org.apache.log4j.FileAppender
log4j.appender.logFile.Threshold=DEBUG
log4j.appender.logFile.ImmediateFlush=true
log4j.appender.logFile.Append=true
log4j.appender.logFile.File=/Users/mac2099/temp/mylog.log
log4j.appender.logFile.layout=org.apache.log4j.PatternLayout
log4j.appender.logFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] %c: %m%n
log4j參考:

Log4j.properties配置詳解-cnblogs
Log4j.properties配置詳解


log4j2

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

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.example</groupId>
    <artifactId>log4j2demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <name>log4j2demo</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.12.1</version>
        </dependency>
    </dependencies>
</project>

Main.java
package com.mac2099.log4j2;

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

/**
 * Hello world!
 */
public class Main {
    static final Logger LOGGER = LogManager.getLogger(Main.class);
    public static void main(String[] args) {
        LOGGER.info("log4j2 demo");
    }
}

log4j2.properties
rootLogger.level=info
rootLogger.appenderRef.stdout.ref=STDOUT
appender.console.type=Console
appender.console.name=STDOUT
appender.console.layout.type=PatternLayout
appender.console.layout.pattern=%d{yyyy-MM-dd HH:mm:ss} [%p] %c: %m%n
運(yùn)行結(jié)果
2021-10-11 22:35:09 [INFO] com.mac2099.log4j2.Main: log4j2 demo
log4j2參考:

log4j2.properties 配置文件樣例及作用解釋

log4j2詳細(xì)配置參考
name=PropertiesConfig
# 定義變量。指定日志文件的位置和文件名稱,以便記錄多份日志時(shí),直接引用
property.fileName=ctms
property.fileDir=../logs
property.filePath=${fileDir}/${fileName}.log
appenders=console, rolling
 
# rootLogger, 根記錄器,所有記錄器的父輩
# 指定根日志的級(jí)別
rootLogger.level=info
# 指定輸出的appender引用
rootLogger.appenderRef.stdout.ref=Stdout
rootLogger.appenderRef.rolling.ref=InfoRollingFile
 
# console
# 指定輸出源的類型與名稱
appender.console.type=Console
appender.console.name=Stdout
appender.console.layout.type=PatternLayout
# 輸出模板
appender.console.layout.pattern=%highlight{%d{yyyy-MM-dd HH:mm:ss.SSS} [%5p] [%t] [%l] - %m%n}{FATAL=white, ERROR=red, WARN=blue, INFO=Green, DEBUG=Yellow, TRACE=blue}
 
# rolling file
appender.rolling.type=RollingFile
appender.rolling.name=InfoRollingFile
appender.rolling.fileName=${filePath}
# 指定當(dāng)發(fā)生Rolling時(shí),文件的轉(zhuǎn)移和重命名規(guī)則
appender.rolling.filePattern=${fileDir}/${fileName}_%d{yyyy-MM-dd}_%i.log
appender.rolling.layout.type=PatternLayout
appender.rolling.layout.pattern=%highlight{%d{yyyy-MM-dd HH:mm:ss.SSS} [%5p] [%t] [%l] - %m%n}{FATAL=white, ERROR=red, WARN=blue, INFO=Green, DEBUG=Yellow, TRACE=blue}
# 指定記錄文件的封存策略,該策略主要是完成周期性的日志文件封存工作
appender.rolling.policies.type=Policies
# 基于時(shí)間的觸發(fā)策略
appender.rolling.policies.time.type=TimeBasedTriggeringPolicy
# 當(dāng)前記錄周期為每1h生成一個(gè)文件
appender.rolling.policies.time.interval=1
appender.rolling.policies.time.modulate=true
# 基于日志文件體積的觸發(fā)策略
appender.rolling.policies.size.type=SizeBasedTriggeringPolicy
# 當(dāng)日志文件體積大于size指定的值時(shí),觸發(fā)Rolling
appender.rolling.policies.size.size=20M
# 文件封存的覆蓋策略
appender.rolling.strategy.type=DefaultRolloverStrategy
# 生成分割(封存)文件的個(gè)數(shù)
appender.rolling.strategy.max=100

logback

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

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>logbackdemo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <name>logbackdemo</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
    </dependencies>

</project>

Main.java
package com.mac2099.logback;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Hello world!
 */
public class Main {
    static final Logger LOGGER = LoggerFactory.getLogger(Main.class);

    public static void main(String[] args) {
        LOGGER.info("logback demo");
    }
}

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

    <!--控制臺(tái)日志, 控制臺(tái)輸出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%p] %c: %m%n</pattern>
        </encoder>
    </appender>
    <!-- 日志輸出級(jí)別 -->
    <root level="debug">
        <appender-ref ref="console"/>
    </root>
</configuration>
運(yùn)行結(jié)果
2021-10-11 22:40:35 [INFO] com.mac2099.logback.Main: logback demo
logback參考:

logback配置詳解 & 原理介紹

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容