spring進步 -- log4j的學習

一直感受到log4j是使用比較混亂,今天抽空整理一下,之後方便使用java

1、引用apache.log4j
使用maven進行lo4j的引用mysql

<!-- Apache Log4j 1.2.17 -->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

其餘版本也能夠再資源庫搜索添加
http://mvnrepository.com/arti...spring

2、再spring的bean中或者java類中加入log4jsql

/**
* lo4j引用demo
*/
@Controller
@RequestMapping("demoWeb")
public class DemoWebController {
    //使用方法1 -- 用this直接表明本類
    private final Logger logger = Logger.getLogger(this.getClass());
    //使用方法2 -- 使用用本類引用
    private final Logger logger = Logger.getLogger(DemoWebController.getClass());
}

3、配置log4j配置文件(引用的lo4j百度百科)
一、在配置resources或自定義路徑下配置log4j.properties(命名自定義,只要spring能檢索到就能夠)
二、說明:
① 配置根Logger數據庫

Logger 負責處理日誌記錄的大部分操做。
其語法爲:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
其中,level 是日誌記錄的優先級,分爲OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定義的級別。
Log4j建議只使用四個級別,優先級從高到低分別是ERROR、WARN、INFO、DEBUG。
經過在這裏定義的級別,您能夠控制到應用程序中相應級別的日誌信息的開關。好比在這裏定義了INFO級別,只有等於及高於這個級別的才進行處理,則應用程序中全部DEBUG級別的日誌信息將不被打印出來。
ALL:打印全部的日誌,OFF:關閉全部的日誌輸出。 
appenderName就是指定日誌信息輸出到哪一個地方。可同時指定多個輸出目的地。
示例:
log4j.rootLogger=info, stdout

② 配置日誌信息輸 Appenderapache

##這裏填寫你輸出的方式
og4j.appender.appenderName = {appender}

Log4j提供的appender有如下幾種:app

  • org.apache.log4j.ConsoleAppender(控制檯)
  • org.apache.log4j.FileAppender(文件)
  • org.apache.log4j.DailyRollingFileAppender(天天產生一個日誌文件)
  • org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)
  • org.apache.log4j.WriterAppender(將日誌信息以流格式發送到任意指定的地方)
  • org.apache.log4j.jdbc.JDBCAppender(向數據庫發送日誌)
  • org.apache.log4j.net.SMTPAppender(郵件發送日誌)

示例:maven

##這裏表示控制檯的信息記錄
og4j.appender.appenderName = org.apache.log4j.ConsoleAppender

## 下面是appender的基本options

##系統輸出方式
log4j.appender.appenderName.Target = System.out
##生成文件路勁
log4j.appender.appenderName.File = E:\\file\\log\\qc.log
##追加方式 true爲在信息後面追加  false爲覆蓋信息後輸出
log4j.appender.appenderName.Append = true
##指定輸出等級
log4j.appender.appenderName.Threshold = INFO 
##佈局輸出
log4j.appender.appenderName.layout = org.apache.log4j.PatternLayout

③置日誌信息的格式(佈局)佈局

##這裏填寫你輸出的方式
og4j.appender.appenderName.layout  = {style}

Log4j提供的style有如下幾種:this

  • org.apache.log4j.HTMLLayout(以HTML表格形式佈局),
  • org.apache.log4j.PatternLayout(能夠靈活地指定佈局模式),
  • org.apache.log4j.SimpleLayout(包含日誌信息的級別和信息字符串),
  • org.apache.log4j.TTCCLayout(包含日誌產生的時間、線程、類別等等信息)

若是使用pattern佈局就要指定的打印信息的具體格式ConversionPattern,打印參數以下:

  • %m 輸出代碼中指定的消息;
  • %M 輸出打印該條日誌的方法名;
  • %p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL;
  • %r 輸出自應用啓動到輸出該log信息耗費的毫秒數;
  • %c 輸出所屬的類目,一般就是所在類的全名;
  • %t 輸出產生該日誌事件的線程名;
  • %n 輸出一個回車換行符,Windows平臺爲"rn」,Unix平臺爲"n」;
  • %d 輸出日誌時間點的日期或時間,默認格式爲ISO8601,也能夠在其後指定格式,好比:%d{yyyy-MM-dd HH:mm:ss,SSS},輸出相似:2002-10-18 22:10:28,921;
  • %l 輸出日誌事件的發生位置,及在代碼中的行數;
  • [QC]是log信息的開頭,能夠爲任意字符,通常爲項目簡稱。
    示例
##這裏進行輸出格式配置
log4j.appender.appenderName.layout.ConversionPattern= [QC] %p [%t] %C.%M(%L) | %m%n

輸出的信息
[demo] DEBUG [main] DemoBeanFactory.getDemo(189) | this is output log

以上就完成了基本的log4j的配置和使用


下面進行通常示例配置:

### 設置日誌等級  ###
log4j.rootLogger=DEBUG,CONSOLE,DATABASE,DAIY_LOG,DAIY_INFO_LOG,DAIY_ERROR_LOG

### CONSOLE 控制檯輸出 ###
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[spring-demo][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n

### 將錯誤日誌存到DATABASE中 ###
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
##數據庫地址
log4j.appender.DATABASE.URL=jdbc:mysql://127.0.0.1:3306/demo
##數據庫橋
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
##mysql用戶名
log4j.appender.DATABASE.user=root
##mysql密碼
log4j.appender.DATABASE.password=root
##講console中的警告日誌書寫的到數據庫中
log4j.appender.CONSOLE.Threshold=WARN
# INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
log4j.appender.DATABASE.sql=INSERT INTO LOG4J(stamp,thread, infolevel,class,messages) VALUES ('%d{yyyy-MM-dd HH:mm:ss}', '%t', '%p', '%l', '%m')
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=[spring-demo][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n

### DAIYLOG 每日信息 ###
log4j.appender.DAIY_LOG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DAIY_LOG.File=E:\\file\\log\\demo_all_log.log
log4j.appender.DAIY_LOG.Append=true
log4j.appender.DAIY_LOG.Threshold=ALL 
log4j.appender.DAIY_LOG.layout=org.apache.log4j.PatternLayout
log4j.appender.DAIY_LOG.layout.ConversionPattern=[spring-demo][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n

### DAIYLOG 每日INFO信息 ###
log4j.appender.DAIY_INFO_LOG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DAIY_INFO_LOG.File=E:\\file\\log\\demo_info_log.log
log4j.appender.DAIY_INFO_LOG.Append=true
log4j.appender.DAIY_INFO_LOG.Threshold=INFO 
log4j.appender.DAIY_INFO_LOG.layout=org.apache.log4j.PatternLayout
log4j.appender.DAIY_INFO_LOG.layout.ConversionPattern=[spring-demo][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n

### DAIYLOG 每日ERROR信息 ###
log4j.appender.DAIY_ERROR_LOG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DAIY_ERROR_LOG.File=E:\\file\\log\\demo_error_log.log
log4j.appender.DAIY_ERROR_LOG.Append=true
log4j.appender.DAIY_ERROR_LOG.Threshold=ERROR 
log4j.appender.DAIY_ERROR_LOG.layout=org.apache.log4j.PatternLayout
log4j.appender.DAIY_ERROR_LOG.layout.ConversionPattern=[spring-demo][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n

自定義等後續進行補充和完善


概念引用:https://baike.baidu.com/item/...

相關文章
相關標籤/搜索