環(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詳細(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