log4j筆記

log4j筆記

log4j

log4j是一個用Java編寫的可靠,快速和靈活的日誌框架(API),它在Apache軟件許可下發布。apache

log4j安裝app

       使用maven安裝,在pom.xml的dependencies節點直接添加如下依賴,便可使用框架

<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

log4j配置maven

      能夠在類目錄下創建一個資源文件夾,如src/main/resources目錄下,新建log4j.properties配置文件,如佈局

 
log4j.rootLogger=DEBUG,FILE
#file
log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd
log4j.appender.FILE.File=./src/logs/out.log
log4j.appender.FILE.Append=true
log4j.appender.FILE.Threshold=DEBUG
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout 
log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ] %p:%m%n
 

1. log4j.rootLogger=DEBUG,FILE線程

    首先,級別優先級是ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF。debug

    這裏根的日誌級別設置DEBUG級別,用來控制下面全部appender節點的日誌級別。這裏設置了DEBUG,則表示大於等於DEBUG級別的日誌記錄纔會發送到下面的appender節點處理。日誌

    而第二個參數FILE則是appender節點的名稱,另外DEBUG後面能夠放多個名稱的,若是log4j.rootLogger=DEBUG,FILE,FILE1,FILE2。code

2. log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppenderxml

    這裏表示FILE是使用org.apache.log4j.DailyRollingFileAppender,而DailyRollingFileAppender是表明日誌文件滾動,後一天會把前一天的log文件更名。

 另外還有org.apache.log4j.FileAppender所有寫在一個文件中,useorg.apache.log4j.RollingFileAppender表示日誌文件滾動,條件是maxFileSize文件大小,默認是大於10m就分開下一個文件寫日誌,

3. log4j.appender.FILE.DatePattern='.'yyyy-MM-dd,表示一天滾動一次。下面是列表

    

DatePattern 描述
'.' yyyy-MM 滾動在每月的結束和下一個月初
'.' yyyy-MM-dd 這是默認值,天天午夜滾動
'.' yyyy-MM-dd-a 滾動每一天的午夜和中午
'.' yyyy-MM-dd-HH 滾動在每個小時
'.' yyyy-MM-dd-HH-mm 滾動在每個分鐘
'.' yyyy-ww 滾動每一個星期取決於區域設置時的第一天

4. log4j.appender.FILE.File=./src/logs/out.log

   這裏參數表示日誌文件存放路徑

5.log4j.appender.FILE.Append=true

   表示是否添加到日誌文件末尾,若是爲false且存在日誌文件,就不寫入,坑。

6.log4j.appender.FILE.Threshold=DEBUG

  表示能夠寫入的日誌級別,根節點的級別優先

7. log4j.appender.FILE.layout=org.apache.log4j.PatternLayout

   表示使用模式格式寫日誌,另外還有HTMLLayout,XMLLayout,DateLayout等格式。

8.log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ] %p:%m%n

 日誌寫入的實際內容,裏面的佔位符含義以下

轉換字符 表示的意思
c 用於輸出的記錄事件的類別。例如,對於類別名稱"a.b.c" 模式  %c{2} 會輸出 "b.c"
C 用於輸出呼叫者發出日誌請求的徹底限定類名。例如,對於類名 "org.apache.xyz.SomeClass", 模式 %C{1} 會輸出 "SomeClass".
d 用於輸出的記錄事件的日期。例如, %d{HH:mm:ss,SSS} 或 %d{dd MMM yyyy HH:mm:ss,SSS}.
F 用於輸出被髮出日誌記錄請求,其中的文件名
l 用於將產生的日誌事件調用者輸出位置信息
L 用於輸出從被髮出日誌記錄請求的行號
m 用於輸出使用日誌事件相關聯的應用程序提供的消息
M 用於輸出發出日誌請求所在的方法名稱
n 輸出平臺相關的行分隔符或文字
p 用於輸出的記錄事件的優先級
r 用於輸出毫秒從佈局的結構通過直到建立日誌記錄事件的數目
t 用於輸出生成的日誌記錄事件的線程的名稱
x 用於與產生該日誌事件的線程相關聯輸出的NDC(嵌套診斷上下文)
X 在X轉換字符後面是鍵爲的MDC。例如  X{clientIP} 將打印存儲在MDC對鍵clientIP的信息
% 文字百分號 %%將打印%標誌

slf4j

       slf4j是門面模式的典型應用,因此slf4j的做用是提供標準統一的API,而不是具體實現,好處就是更換日誌框架不須要修改代碼,只須要改maven的引用包。阿里巴巴開發規約裏面也強制規定了,

【強制】應用中不可直接使用日誌系統(Log4j、Logback)中的API,而應依賴使用日誌框架(SLF4J、JCL--Jakarta Commons Logging)中的API。

       slf4j-simple、logback都是slf4j的具體實現,log4j並不直接實現slf4j,可是有專門的一層橋接slf4j-log4j12來實現slf4j。因此咱們若是使用log4j的話,只須要在pom.xml下面添加

<dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.8.0-alpha2</version>
    </dependency>

   使用方式

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

    public static void main(String[] args) {
        loggers.debug("debug");
   }
相關文章
相關標籤/搜索