IDEA整合日誌框架Log4j2+Slf4j詳細配置過程
阿新 • • 發佈:2017-11-05
info 信息 mon 文件路徑 留言 nbsp time 檢測 之間
日誌框架這麽多,他們之間到底是什麽關系呢?籠統的講就是slf4j是一系列的日誌接口,而log4j2、logback是具體實現了接口功能的日誌框架。現在的主流日誌接口都使用slf4j,而日誌的實現就見仁見智了,至於他們的關系請自行百度,此處選擇log4j2作為實現框架。網上看到的教程要麽對代碼沒有解釋,對新手不友好;要麽時間比較久遠,跟不上時代。這裏使用新版本並結合大量註釋,力求簡潔明了,有什麽問題歡迎留言交流。
運行環境:
- log4j2 2.8.1 + slf4j 1.7.25
- IntelliJ IDEA 2017.2.5
- maven 3.0.5
配置過程
Step 1:導入maven依賴
<properties> <slf4j.version>1.7.25</slf4j.version> <log4j.version>2.8.2</log4j.version> </properties> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-web</artifactId> <version>${log4j.version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>${log4j.version}</version> </dependency>
Step 2:添加配置文件
配置文件可以直接在resources文件夾下創建,文件名為log4j2.xml,該文件夾是IDEA專門用來存放各種配置文件的地方,這樣就不需要指定配置文件的位置。如果想放在其他文件夾下,則需要在web.xml文件中添加如下配置:
<context-param> <param-name>log4jConfiguration</param-name> <!-- 日誌配置文件路徑,請根據具體項目自行調整 --> <param-value>classpath:conf/log4j2.xml</param-value> </context-param>
我的配置文件log4j2.xml內容如下(此處並沒有將日誌信息輸出到外部文件):
<?xml version="1.0" encoding="utf-8"?> <!--日誌級別:TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果設置為WARN,則低於WARN的信息都不會輸出--> <!-- status : 這個用於設置log4j2自身內部的信息輸出,可以不設置,當設置成trace時,會看到log4j2內部各種詳細輸出 monitorInterval : Log4j能夠自動檢測修改配置文件和重新配置本身, 設置間隔秒數。此處表示每隔300秒重讀一次配置文件 --> <Configuration status="ERROR" monitorInterval="300"> <!--<properties>--> <!--<property name="LOG_HOME">F:\logs</property>--> <!--<property name="ERROR_LOG_FILE_NAME">error</property>--> <!--</properties>--> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <!-- 定義類型為Console的Appender --> <PatternLayout pattern="%d{HH:mm:ss} [%-5level] [%-10thread] %c{1} - %msg%n"/> <!-- 定義類型為Pattern的Layout --> </Console> </Appenders> <!--定義logger,只有定義了logger並引入上面的appender,appender才會生效--> <Loggers> <Root level="error"> <!-- 定義Root Logger --> <AppenderRef ref="Console"/> <!-- Root Logger的Appender引用上面定義的Console --> </Root> <!--定義名字為MainLogger的Logger,其日誌級別為info,info以下級別的信息將不會輸出 --> <Logger name="MainLogger" level="info" additivity="false"> <AppenderRef ref="Console"/> <!-- Root Logger的Appender引用上面定義的Console --> </Logger> </Loggers> </Configuration>
Step 3: 在Java文件中使用slf4j打印日誌信息:
此處註意Logger的名稱必須與配置文件中對應
@Controller public class MainController { // 獲取log4j2.xml文件中定義的名為“MainLogger”的Logger // 如果沒有對應名稱的Logger,則無法使用Logger記錄和輸出日誌信息 private static final Logger log = LoggerFactory.getLogger("MainLogger"); @RequestMapping(value = "/test") public String test(){ log.info("info..."); log.debug("debug..."); log.warn("warn..."); log.error("error..."); return "test"; } }
IDEA整合日誌框架Log4j2+Slf4j詳細配置過程