日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

springboot(2.2.4)的默认日志框架logback换成log4j2

發布時間:2024/9/30 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springboot(2.2.4)的默认日志框架logback换成log4j2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

阿里https://github.com/alibaba/druid/的文檔,druid經過阿里購物節的大數據量的考驗,又標榜druid是帶有監控的數據庫連接池,可以時刻監測數據路訪問的性能,并發,連接,防sql注入,強大的日志功能等,被安利,但是文檔只有對log4j2的說明,就換springboot的logback框架為log4j2框架。攏共分幾步

1.剔除logback(dependencies里的第一個dependency的exclusion)和引入log4j2的pom依賴

<dependencies><!--這個starter-web肩負著剔除logback的重任,一定要放在第一個位置--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><!--去掉springboot自帶的logback日志框架,因為項目要用log4j2框架--><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><!--添加log4j2相關jar包--><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.7</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.7</version></dependency><!--引入log4j2日志框架,這個是看阿里的druid文檔的時候引進來的,測試過,刪掉也沒事,不知道有什么用--> <!--<dependency><groupId>ort.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId></dependency> -->

?2.配置log4j2.xml和引入到項目

log4j2.xml完全是用阿里官方文檔的,可以正常用

<?xml version="1.0" encoding="UTF-8"?> <configuration status="OFF"><appenders><Console name="Console" target="SYSTEM_OUT"><!--只接受程序中DEBUG級別的日志進行處理--><ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="[%d{HH:mm:ss.SSS}] %-5level %class{36} %L %M - %msg%xEx%n"/></Console><!--處理DEBUG級別的日志,并把該日志放到logs/debug.log文件中--><!--打印出DEBUG級別日志,每次大小超過size,則這size大小的日志會自動存入按年份-月份建立的文件夾下面并進行壓縮,作為存檔--><RollingFile name="RollingFileDebug" fileName="./logs/debug.log"filePattern="logs/$${date:yyyy-MM}/debug-%d{yyyy-MM-dd}-%i.log.gz"><Filters><ThresholdFilter level="DEBUG"/><ThresholdFilter level="INFO" onMatch="DENY" onMismatch="NEUTRAL"/></Filters><PatternLayoutpattern="[%d{yyyy-MM-dd HH:mm:ss}] %-5level %class{36} %L %M - %msg%xEx%n"/><Policies><SizeBasedTriggeringPolicy size="500 MB"/><TimeBasedTriggeringPolicy/></Policies></RollingFile><!--處理INFO級別的日志,并把該日志放到logs/info.log文件中--><RollingFile name="RollingFileInfo" fileName="./logs/info.log"filePattern="logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log.gz"><Filters><!--只接受INFO級別的日志,其余的全部拒絕處理--><ThresholdFilter level="INFO"/><ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/></Filters><PatternLayoutpattern="[%d{yyyy-MM-dd HH:mm:ss}] %-5level %class{36} %L %M - %msg%xEx%n"/><Policies><SizeBasedTriggeringPolicy size="500 MB"/><TimeBasedTriggeringPolicy/></Policies></RollingFile><!--處理WARN級別的日志,并把該日志放到logs/warn.log文件中--><RollingFile name="RollingFileWarn" fileName="./logs/warn.log"filePattern="logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log.gz"><Filters><ThresholdFilter level="WARN"/><ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/></Filters><PatternLayoutpattern="[%d{yyyy-MM-dd HH:mm:ss}] %-5level %class{36} %L %M - %msg%xEx%n"/><Policies><SizeBasedTriggeringPolicy size="500 MB"/><TimeBasedTriggeringPolicy/></Policies></RollingFile><!--處理error級別的日志,并把該日志放到logs/error.log文件中--><RollingFile name="RollingFileError" fileName="./logs/error.log"filePattern="logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log.gz"><ThresholdFilter level="ERROR"/><PatternLayoutpattern="[%d{yyyy-MM-dd HH:mm:ss}] %-5level %class{36} %L %M - %msg%xEx%n"/><Policies><SizeBasedTriggeringPolicy size="500 MB"/><TimeBasedTriggeringPolicy/></Policies></RollingFile><!--druid的日志記錄追加器--><RollingFile name="druidSqlRollingFile" fileName="./logs/druid-sql.log"filePattern="logs/$${date:yyyy-MM}/api-%d{yyyy-MM-dd}-%i.log.gz"><PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss}] %-5level %L %M - %msg%xEx%n"/><Policies><SizeBasedTriggeringPolicy size="500 MB"/><TimeBasedTriggeringPolicy/></Policies></RollingFile></appenders><loggers><root level="DEBUG"><appender-ref ref="Console"/><appender-ref ref="RollingFileInfo"/><appender-ref ref="RollingFileWarn"/><appender-ref ref="RollingFileError"/><appender-ref ref="RollingFileDebug"/></root><!--記錄druid-sql的記錄--><logger name="druid.sql.Statement" level="debug" additivity="false"><appender-ref ref="druidSqlRollingFile"/></logger><!--log4j2 自帶過濾日志--><Logger name="org.apache.catalina.startup.DigesterFactory" level="error"/><Logger name="org.apache.catalina.util.LifecycleBase" level="error"/><Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn"/><logger name="org.apache.sshd.common.util.SecurityUtils" level="warn"/><Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn"/><Logger name="org.crsh.plugin" level="warn"/><logger name="org.crsh.ssh" level="warn"/><Logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="error"/><Logger name="org.hibernate.validator.internal.util.Version" level="warn"/><logger name="org.springframework.boot.actuate.autoconfigure.CrshAutoConfiguration"level="warn"/><logger name="org.springframework.boot.actuate.endpoint.jmx" level="warn"/><logger name="org.thymeleaf" level="warn"/></loggers> </configuration>

在application.properties里引入配置?

#指定log4j2的路徑 logging.config=classpath:log4j2.xml

3.代碼中使用

//引入import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger;public class MyClass{private static final Logger logger = LogManager.getLogger(CarController.class);public void myMethod(){logger.error("error occurs here!");} }

4.思考問題

a.阿里的開放規范里強制要求引入日志是只能使用?SLF4J里的API,即使用門面模式里門面里的API,而不能使用對應實現框架的API,即代碼里使用日志API只能是:

import org.slf4j.Logger; import org.slf4j.LoggerFactory;private static final Logger logger = LoggerFactory.getLogger(MyClass.class);

log4J2官網說了好幾個log4j2的好處,也給出了項目引入log4j2時使用SLF4J的API及SLF4J實現框架的方法,如下:

但是這樣使用的仍然的log4j2的API啊,并不是SLF4J的API,不知道阿里怎么權衡,求教知道的朋友,謝謝?

?

?

?

總結

以上是生活随笔為你收集整理的springboot(2.2.4)的默认日志框架logback换成log4j2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。