log4j配置和使用

  • 2019 年 10 月 30 日
  • 筆記

版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。

本文鏈接:https://blog.csdn.net/luo4105/article/details/72865424

配置講解

log4j是操作日誌列印工具。

日誌級別

日誌主要有幾個級別,從低到高依次是DEBUG < INFO<WARN < ERROR < FATAL < OFF,低級別會列印高級別的日誌。

日誌輸出格式

1.%m : 日誌內容

2.%d : 日期格式

3.%p : 日誌級別

4.%c : java類名

5.%l : 程式碼源碼行數

如:[%d{HH:mm:ss:SSS}][%p] (%c:%L) – %m%n

輸出格式:[08:58:59:412][INFO] (com.soon.action:35)

日誌輸出文件

DailyRollingFileAppender:將每天的日誌作為一個日誌文件保存

RollingLogFileAppender:通過配置可以實現日誌文件大小大於配置的最大值便新建日誌文件存儲

常見配置講解

log4j.appender.D.File =E://logs/log.log       ### 日誌文件地址,當天的文件名是"log.log",以前的日誌文件名是"log.log.2017-05-31"###  log4j.appender.D.Append = true                                 ### 為true是日誌追加,false是覆蓋日誌 ###  log4j.appender.D.Threshold = DEBUG                      ### 日誌輸出級別 ###  log4j.appender.D.layout =org.apache.log4j.PatternLayout          ###輸出格式的類 ###  log4j.appender.D.layout.ConversionPattern =%-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [%p ]  %m%n             ### 日誌輸出格式 ###

整個文件

### 設置###  log4j.rootLogger = debug,stdout,D,E    log4j.logger.org.mybatis.example=DEBUG    ### 輸出資訊到控制抬 ###  log4j.appender.stdout = org.apache.log4j.ConsoleAppender  log4j.appender.stdout.Target = System.out  log4j.appender.stdout.layout = org.apache.log4j.PatternLayout  log4j.appender.stdout.layout.ConversionPattern= [%-5p]%d{yyyy-MM-dd HH:mm:ss,SSS}method:%l%n%m%n    ### 輸出DEBUG 級別以上的日誌到=E://logs/error.log ###  log4j.appender.D = org.apache.log4j.DailyRollingFileAppender  log4j.appender.D.File = E://logs/log.log  log4j.appender.D.Append = true  log4j.appender.D.Threshold = DEBUG  log4j.appender.D.layout = org.apache.log4j.PatternLayout  log4j.appender.D.layout.ConversionPattern= %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r] - [ %p ]  %m%n    ### 輸出ERROR 級別以上的日誌到=E://logs/error.log ###  log4j.appender.E = org.apache.log4j.DailyRollingFileAppender  log4j.appender.E.File =E://logs/error.log  log4j.appender.E.Append = true  log4j.appender.E.Threshold = ERROR  log4j.appender.E.layout = org.apache.log4j.PatternLayout  log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-ddHH:mm:ss}  [ %t:%r] - [ %p ]  %m%n

使用

在項目中,通過以下程式碼輸出日誌。

private staticLogger logger= Logger.getLogger(LogTest.class);  logger.error("錯誤資訊");  logger.info("info");

配置

在web項目中,spring會自動掃描項目包目錄下是否存在log4j.properties文件。

如果想自定義log4j的文件名和路徑,需要在web.xml中配置log4j的文件路徑

<listener>      <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>  </listener>  <context-param>      <param-name>log4jConfigLocation</param-name>      <param-value>classpath:log4j.xml</param-value>  </context-param>  <context-param>      <param-name>log4jRefreshInterval</param-name>      <param-value>60000</param-value>  </context-param>

輸出mybatis SQL配置

讓log4j列印mybatis的sql語句需要需要把列印等級改為debug

當log4j為debug,它會列印所有框架級別為debug的日誌,這無疑是十分巨大而且悲劇的,如果只想列印mybatis的sql,不想列印spring、dubbo等框架的日誌,可以做如下配置

### logger在rootlogger之前 ###  log4j.logger.com.lc.dao=debug,stdout,D  log4j.rootLogger = error,stdout,D,E

這裡com.lc.dao就是mapper介面的包,這個配置意思是,對於dao包,列印日誌是debug級別,對於全局,列印日誌是error級別。

它的列印就只有