1. 程式人生 > >slf4j+log4j2的配置

slf4j+log4j2的配置

tex AR tro slf4j pom.xml end 依賴 tid 詳細

昨天自己測試了一下slf4j+log4j2的配置,可以正常使用,雖然配置十分簡單,但好記性不如爛筆頭,想想還是記錄下來吧。

運行的環境:jdk1.7tomcat7Mavenweb項目

1.在新建的maven項目的pom文件中添加jar包依賴(依賴代碼在步驟末尾):

需要添加依賴的jar包有:

slf4japi接口包:slf4j-api

log4j2的核心包:log4j-core

log4j2api接口包:log4j-api

slf4j對應log4j2日誌框架的驅動包:log4j-slf4j-impl

log4j2的異步日誌功能包:com.lmax.disruptor

解決web項目log4j

可能出現警告的jar包:log4j-web

2.配置log4j2.xml日誌配置文件(日誌配置文件內容放在步驟末尾

·日誌配置文件默認讀取路徑為src/main/resource

·若文件放置在默認讀取路徑下則無需配置讀取路徑

·若文件放置到其他路徑下則需要在web.xml中設置日誌配置文件的讀取路徑,代碼如下:

<context-param>
   <param-name>log4jConfiguration</param-name>
   <param-value>classpath:log4j2.xml</param-value>
</context-param>

3.在代碼中使用日誌功能:

 1 import org.slf4j.Logger;
 2 import org.slf4j.LoggerFactory;
 3 
 4 public class logTest {
 5 
 6     // 通過slf4j接口創建Logger對象
 7     private static final Logger logger = LoggerFactory.getLogger(logTest.class);
 8 
 9     public static void main(String[] args) {
10 logger.info("this is info"); 11 logger.error("this is error"); 12 } 13 }

運行效果:

技術分享圖片

關於日誌配置文件的詳細說明請參考log4j2配置文件log4j2.xml詳解,以下是pom.xml需要加入的jar包依賴以及日誌配置文件log4j2.xml內容示例:

pom.xml需要加入的jar包依賴:

<properties>

<!-- jar包版本設置 -->

<slf4j.version>1.7.21</slf4j.version>

<log4j.version>2.11.0</log4j.version>

</properties>

<dependencies>

<!-- 導入slf4j的接口包以及對應日誌框架的驅動包 -->

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-api</artifactId>

<version>${slf4j.version}</version>

</dependency>

<!--用於slf4j與log4j2保持橋接 -->

<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl -->

<dependency>

    <groupId>org.apache.logging.log4j</groupId>

    <artifactId>log4j-slf4j-impl</artifactId>

    <scope>runtime</scope>

    <version>${log4j.version}</version>

</dependency>

 

<!-- 導入日誌框架核心包與接口包 -->

<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->

<dependency>

<groupId>org.apache.logging.log4j</groupId>

<artifactId>log4j-core</artifactId>

<scope>runtime</scope>

<version>${log4j.version}</version>

</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->

<dependency>

    <groupId>org.apache.logging.log4j</groupId>

    <artifactId>log4j-api</artifactId>

    <version>${log4j.version}</version>

</dependency>

 

<!--用於解決web環境下關閉服務器時可能出現的log4j線程無法及時關閉的warn,web工程需要包含log4j-web,非web工程不需要 -->

<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-web -->

<dependency>

<groupId>org.apache.logging.log4j</groupId>

<artifactId>log4j-web</artifactId>

<scope>runtime</scope>

<version>${log4j.version}</version>

</dependency>

 

<!--使用log4j2的AsyncLogger時需要包含disruptor -->

<!-- https://mvnrepository.com/artifact/com.lmax/disruptor -->

<dependency>

    <groupId>com.lmax</groupId>

    <artifactId>disruptor</artifactId>

    <scope>runtime</scope>

    <version>3.4.2</version>

</dependency>

</dependencies>

日誌配置文件內容示例:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 
 3 <!-- 
 4  日誌說明:
 5 
 6 (1)請根據實際情況配置各項參數
 7 
 8 (2)需要註意日誌文件備份數和日誌文件大小,註意預留目錄空間
 9 
10 (3)實際部署的時候backupFilePatch變量需要修改成linux目錄
11 
12  -->
13 
14 <configuration status="error">
15 
16     <Properties>
17 
18         <Property name="fileName">front.log</Property>
19 
20         <Property name="backupFilePatch">d:/usr/front/log/</Property>
21 
22       </Properties>
23 
24     <!--先定義所有的appender-->
25 
26     <appenders>
27 
28         <!--這個輸出控制臺的配置-->
29 
30         <Console name="Console" target="SYSTEM_OUT">
31 
32              <!--控制臺只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch)-->
33 
34             <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" />
35 
36             <!--這個都知道是輸出日誌的格式-->
37 
38             <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
39 
40         </Console>
41 
42         
43 
44         <!--這個會打印出所有的信息,每次大小超過size,則這size大小的日誌會自動存入按年份-月份建立的文件夾下面並進行壓縮,作為存檔-->
45 
46         <RollingFile name="RollingFile" fileName="${backupFilePatch}/${fileName}"
47 
48             filePattern="${backupFilePatch}$${date:yyyy-MM}/app-%d{yyyyMMddHHmmssSSS}.log.gz">
49 
50             <PatternLayout
51 
52                 pattern="%d{yyyy-MM-dd HH:mm:ss.SSS z} %-5level %class{36} %L %M - %msg%xEx%n" />
53 
54             
55 
56             <!-- 日誌文件大小 -->
57 
58             <SizeBasedTriggeringPolicy size="20MB" />
59 
60             <!-- 最多保留文件數 -->
61 
62             <DefaultRolloverStrategy max="20"/>
63 
64         </RollingFile>
65 
66     </appenders>
67 
68     
69 
70     <!--然後定義logger,只有定義了logger並引入的appender,appender才會生效-->
71 
72     <loggers>
73 
74         <!--建立一個logger,此logger監聽name對應的包名下的日誌輸出,level表示日誌級別-->
75 
76         <Logger name="com.testlog" level="trace"
77 
78             additivity="true">
79 
80             <AppenderRef ref="RollingFile" />
81 
82         </Logger>
83 
84         <!--建立一個默認的root的logger-->
85 
86         <Root level="error">
87 
88          <!-- 在root中關聯appender才會在對應的位置輸出日誌,定義一個輸出到文件的appender也必須關聯到此處才會保存日誌到文件 -->
89 
90             <AppenderRef ref="Console" />
91 
92         </Root>
93 
94     </loggers>
95 
96 </configuration>

slf4j+log4j2的配置