Log4j2日誌框架整合Slf4j日誌門面
阿新 • • 發佈:2020-12-09
技術標籤:javaslf4jlog4jlog4j2logging
1.說明
本文介紹使用日誌門面Slf4j列印日誌,
底層日誌實現使用Log4j2框架,
方便以後切換底層日誌實現,
Log4j2可以替換成Logback等。
2.依賴管理
在pom.xml依賴管理中匯入slf4j-api和log4j-bom:
<dependencyManagement> <dependencies> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-bom</artifactId> <version>2.12.1</version> <scope>import</scope> <type>pom</type> </dependency> </dependencies> </dependencyManagement>
3.依賴引入
在pom.xml依賴中引入相關的jar包:
<dependencies> <!-- slf4j+log4j2 日誌框架 start --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> </dependency> <!-- slf4j+log4j2 日誌框架 end --> </dependencies>
4.日誌配置
在src/main/resource下面增加log4j2.xml檔案:
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level [%l] - %msg%n"/> </Console> </Appenders> <Loggers> <Root level="DEBUG"> <AppenderRef ref="Console"/> </Root> </Loggers> </Configuration>
說明一下,
雖然使用了日誌門面,
但是配置檔案還是和底層日誌實現相關的,
這裡Log4j2使用log4j2.xml配置檔案,
包括檔案內容的格式,
都要符合Log4j2規範,
更多說明請參考Log4j2完整XML參考(詳細註釋說明)。
5.記錄日誌
在記錄日誌的時候,
使用Slf4j提供的日誌工廠和日誌類即可。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class UserController {
private Logger logger = LoggerFactory.getLogger(getClass());
public List<User> getUsersAll() {
logger.debug("UserController.getUsersAll() start");
}
}
其中通過日誌工廠獲取日誌類的時候,
還有以下寫法,
注意在不同的類中使用時記得修改名稱:
private Logger logger = LoggerFactory.getLogger(UserController.class);
6.輸出日誌
可以看到如下日誌:
2020-07-02 15:57:11.723 [http-nio-8088-exec-1] DEBUG [24] - UserController.getUsersAll() start