動手試一試
這里省略Spring Boot項(xiàng)目的基礎(chǔ)創(chuàng)建,如果您還不會可以看本教程的快速入門open in new window。
下面的操作你可以基于Spring Boot 2.x中默認(rèn)日志框架Logbackopen in new window一文的例子繼續(xù)下去,也可以用任何一個(gè)Spring Boot 2.x的項(xiàng)目來嘗試。
第一步:在pom.xml
中引入Log4j2的Starter依賴spring-boot-starter-log4j2
,同時(shí)排除默認(rèn)引入的spring-boot-starter-logging
,比如下面這樣:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
第二步:在配置文件application.properties
中,通過logging.config
配置指定log4j2的配置文件位置,比如下面這樣:
logging.config=classpath:log4j2.xml
第三步:在resource目錄下新建log4j2.xml
(這里不絕對,根據(jù)第二步中配置的內(nèi)容來創(chuàng)建),然后加入log4j2的日志配置,比如,下面這樣:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
主要是方便大家理解如何把log4j2引入Spring Boot,對于log4j2如何配置這里不做詳細(xì)介紹,所以這里就放個(gè)簡單配置讓程序跑起來即可。如果想深入了解log4j2的配置,可以點(diǎn)擊這里查看open in new window
OK,到這里整合過程就結(jié)束了。是不是很簡單呢?如果您學(xué)習(xí)過程中如遇困難?可以加入我們超高質(zhì)量的Spring技術(shù)交流群open in new window,參與交流與討論,更好的學(xué)習(xí)與進(jìn)步!更多Spring Boot教程可以點(diǎn)擊直達(dá)!open in new window,歡迎收藏與轉(zhuǎn)發(fā)支持!
#常見問題
可能有小伙伴會問,之前不是推薦大家用Slf4j來記錄日志,隔離了具體實(shí)現(xiàn)的日志框架么?那我怎么知道這一頓操作之后,真的已經(jīng)用上Log4j2了呢?
這個(gè)其實(shí)很好判斷,大家只需要在用到日志的地方,加個(gè)端點(diǎn),Debug跑起來,觀察下log對象就可以了,比如:
下面這個(gè)是使用默認(rèn)Logback的情況:
下面這個(gè)是使用Log4j2的情況
最后,因?yàn)橹癓og4j2有過很大的漏洞問題,大家一定要用最新版本哦!
安全起見,建議您至少要用2.17.0以上的版本(如果用的Spring Boot 2.6.2+,那已經(jīng)是2.17.0了,不需要擔(dān)心)。當(dāng)然,目前最新已經(jīng)到2.17.1,您也可以自己升級到2.17.1來使用,如何升級呢?還是按照這篇文章open in new window介紹的操作即可。
#代碼示例
本文的完整工程可以查看下面?zhèn)}庫中2.x
目錄下的chapter8-2
工程:
- Github:https://github.com/dyc87112/SpringBoot-Learning/open in new window
- Gitee:https://gitee.com/didispace/SpringBoot-Learning/