1. 程式人生 > >日誌架構log4j基本使用

日誌架構log4j基本使用

Java log4j

[toc]


日誌架構log4j基本使用

配置文件

###############################################
# 以下的配置文件都是以log4j.開頭
# 最最重要就是第一個log4j.rootLogger,指定log4j日誌的輸出級別(目的地)
# log4j.rootLogger=INFO,stdout,file意思為:
# 日誌可以輸出INFO級別以上的數據,將日誌輸出到stdout標準控制輸出(控制臺),輸出到file
#
# 常見的日誌輸出級別:DEBUG(調試) < INFO(信息) < WARN(警告) < ERROR(錯誤) < FATAL(致命錯誤)
#  日誌輸出的順序:和日誌輸出級別一致,即配置為一個級別,輸出的內容只能是該級別及其以上級別的信息
#  INFO(輸出的包括 INFO WARN ERROR FATAL)
#  ERROR(ERROR FATAL)
#  所以,一般情況下:在開發,測試環境中,日誌的級別為DEBUG;在生產環境中,日誌級別為INFO
#
#  輸出目的地:
#     日誌輸出的各種各樣的目的地,都是通過Appender來進行實現追加的
# 我們在appender中看到的PatternLayout的格式如下:
#
#%m   輸出代碼中指定的消息
#%n   輸出一個回車換行符,Windows平臺為“\r\n”,Unix平臺為“\n”
#%p   輸出優先級,即日誌級別:DEBUG,INFO,WARN,ERROR,FATAL
#%r   輸出自應用啟動到輸出該log信息耗費的毫秒數
#%c   輸出所屬的類目,通常就是所在類的全名
#%t   輸出產生該日誌事件的線程名
#%d   輸出日誌時間點的日期或時間,默認格式為ISO8601,也可以在其後指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},輸出類似:2002年10月18日  22 : 10 : 28 , 921
#%l   輸出日誌事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。舉例:Testlog4.main(TestLog4.java: 10 ) log4j配置詳解 - stone - stonexmx 的博客
# 常見的Appender
# ConsoleAppender
# FileAppender
#
#
###############################################
log4j.rootLogger=INFO,stdout,R, E

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=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n

log4j.appender.file = org.apache.log4j.FileAppender
log4j.appender.file.File = ./logs/spider.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n

### 輸出到日誌文件 ###
# 每天生成一個新的日誌文件
log4j.appender.R = org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File = ./logs/log.log
log4j.appender.R.Append = true
# DEBUG級別及以上的日誌信息輸出到./logs/log.log中
log4j.appender.R.Threshold = DEBUG
log4j.appender.R.layout = org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%t] [%c] [%p] - %m%n

### 保存異常信息到單獨文件 ###
# 每天生成一個新的日誌文件
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File = ./logs/error.log
log4j.appender.E.Append = true
# ERROR級別及以上的日誌信息輸出到./logs/log.log中
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%t] [%c] [%p] - %m%n

程序代碼

package com.uplooking.bigdata.spider;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 使用Log4j步驟:
 *      1.引入maven的依賴
 *      2.將log4j.properties或log4j.xml配置文件添加進項目的classpath下面
 *
 * log4j的入口類就是Logger
 */
public class Log4jTest {

    @Test
    public void testLog4j() {
        Logger logger = LoggerFactory.getLogger(Log4jTest.class);
        logger.debug("日誌-debug信息");
        logger.info("日誌-info信息");
        logger.warn("日誌-warn信息");
        logger.error("日誌-error信息");
    }
}

測試

執行程序代碼,輸出如下:

2018-03-29 15:31:51,164 [main] [com.uplooking.bigdata.spider.Log4jTest] [INFO] - 日誌-info信息
2018-03-29 15:31:51,165 [main] [com.uplooking.bigdata.spider.Log4jTest] [WARN] - 日誌-warn信息
2018-03-29 15:31:51,165 [main] [com.uplooking.bigdata.spider.Log4jTest] [ERROR] - 日誌-error信息

同時也可以看到生成的日誌文件log.log

error.log

日誌架構log4j基本使用