log4j(六)——log4j.properties簡單配置樣例說明


一:測試環境與log4j(一)——為什么要使用log4j?一樣,這里不再重述

 

二:老規矩,先來個栗子,然后再聊聊感受

(1)使用配文件的方式,是不是感覺非常的清爽,如果不在程序中讀取配置文件就更加的清爽啦!這里為了簡便,就是單單使用一個Java類來做實驗了。

import org.apache.log4j.*;
/**
 * Created by godtrue
 */
public class UseLog4j {
    //日志記錄器
    private static Logger LOGGER = LogManager.getLogger(UseLog4j.class);
    //程序入口——主函數
    public static void main(String[]args) {
        //讀取使用Java的特性文件編寫的配置文件
        PropertyConfigurator.configure( "D:\\workspace_test\\hello-log4j\\log4j.properties" );
        //輸出日志信息,測試日志級別的作用(配置在配置文件中),僅僅輸出大於等於目前有效級別的日志信息
        LOGGER.debug("[1]-my level is DEBUG Godtrue 說:今天天氣很好呀!");
        LOGGER.info("[2]-my level is INFO");
        LOGGER.warn("[3]-my level is WARN");
        LOGGER.error("[4]-my level is ERROR");
    }
}

(2)下面的配置文件也僅是列舉了幾個常見的輸出目的地的配置方式,如有更多需求可以參看官網文檔,其中輸出到控制台和達到一定的閾值自動回滾的文件的方式是最長用,要重點了解

###
# 在代碼中配置log4j環境的方式,我們已經見識過了,是不是感覺比較麻煩,我們試試使用配置文件的方式是否使您的應用程序更加的靈活。
# Log4j支持兩種配置文件格式,一種是XML格式的文件,一種是Java特性的文件(鍵=值)。
# 下面我們先試試使用Java特性文件做為配置文件的方式
#
# 以下的設置參數,前文已經講過是怎么回事的,這里就不再重復了
#
###

###
# 設置根記錄器的配置,其語法為:log4j.rootLogger = [ level ] , appenderName1, appenderName2, …appenderNameN
# level用於設置日志記錄的優先級,有系統自定義的8中類型,也可以自定義,官方建議只是用這四種 ERROR>WARN>INFO>DEBUG
# appenderNameN用於設置日志的輸出地,可以設置多個,可以自定義名稱
###
log4j.rootLogger = debug,stdout,D,E,F

###
# 設置日志記錄的輸出地,其語法為:
#     log4j.appender.appenderName = fully.qualified.name.of.appender.class
#   log4j.appender.appenderName.option1 = value1
#   …
#  log4j.appender.appenderName.optionN = valueN
# fully.qualified.name.of.appender.class:指日志輸出目的類的全路徑類名,有好許多預定義,下面介紹四個常用的
# optionN/valueN :分別是指對應的輸出目的地屬性和設置的屬性值
#
# 如果對應的屬性,仍然是對象級別的話,可以通過繼續 . 的形式來設置對應的屬性
#
###

###
# 輸出信息到控制台,其可選的配置有如下幾個:
# 1)Threshold:設置日志信息輸出的級別
# 2)ImmediateFlush:設置日志信息是否被立即輸出,默認為TRUE,立即輸出
# 3)Target:設置日志信息輸出的目標流,有兩種值System.out和System.err ,默認值System.out(err為紅色,out為黑色)
# 4)layout:設置日志信息輸出的樣式
# 5)Encoding:設置文件的編碼格式,默認和系統平台的編碼格式保持一致
###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.Encoding = Utf-8
log4j.appender.stdout.Threshold = INFO
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n

###
# 輸出信息到文件,其常用的可選的配置有如下幾個:
# 1)Threshold:設置日志信息輸出的級別
# 2)ImmediateFlush:設置日志信息是否被立即輸出,默認為TRUE,立即輸出
# 3)File:設置日志信息輸出全路徑,比如:E://logs/FileAppender.log
# 4)layout:設置日志信息輸出的樣式
# 5)Encoding:設置文件的編碼格式,默認和系統平台的編碼格式保持一致
# 6)Append:設置是否將日志消息追加到指定的文件中,默認值true,將消息追加到指定文件中,false指將消息覆蓋指定的文件內容
###
log4j.appender.D = org.apache.log4j.FileAppender
log4j.appender.D.File = E://logs/FileAppender.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = ERROR
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = [%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n

###
# 輸出信息到文件,但是這個文件是可控的,可以配置多久產生一個新的日志信息文件,其常用的可選的配置有如下幾個:
# 1)Threshold:設置日志信息輸出的級別
# 2)ImmediateFlush:設置日志信息是否被立即輸出,默認為TRUE,立即輸出
# 3)File:設置日志信息輸出全路徑,比如:E://logs/DailyRollingFileAppender.log
# 4)layout:設置日志信息輸出的樣式
# 5)Encoding:設置文件的編碼格式,默認和系統平台的編碼格式保持一致
# 6)Append:設置是否將日志消息追加到指定的文件中,默認值true,將消息追加到指定文件中,false指將消息覆蓋指定的文件內容
# 7)DatePattern:設置文件回滾的時間樣式
#              '.'yyyy-MM 每月
#              '.'yyyy-ww 每周
#              '.'yyyy-MM-dd 每天
#              '.'yyyy-MM-dd-a 每天兩次
#              '.'yyyy-MM-dd-HH 每小時
#              '.'yyyy-MM-dd-HH-mm 每分鍾
###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E://logs/DailyRollingFileAppender.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = WARN
log4j.appender.E.DatePattern = '.'yyyy-MM-dd-HH-mm
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = [%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n

###
# 輸出信息到文件,但是這個文件是可控的,當文件的大小達到某個閾值的時候,日志文件會自動回滾,其常用的可選的配置有如下幾個:
# 1)Threshold:設置日志信息輸出的級別
# 2)ImmediateFlush:設置日志信息是否被立即輸出,默認為TRUE,立即輸出
# 3)File:設置日志信息輸出全路徑,比如:E://logs/RollingFileAppender.log
# 4)layout:設置日志信息輸出的樣式
# 5)Encoding:設置文件的編碼格式,默認和系統平台的編碼格式保持一致
# 6)Append:設置是否將日志消息追加到指定的文件中,默認值true,將消息追加到指定文件中,false指將消息覆蓋指定的文件內容
# 7)MaxFileSize:設置當文件達到此閾值的時候自動回滾,單位可以是KB,MB,GB,默認單位是KB
# 8)MaxBackupIndex:設置保存備份回滾日志的最大個數
###
log4j.appender.F = org.apache.log4j.RollingFileAppender
log4j.appender.F.File =E://logs/RollingFileAppender.log
log4j.appender.F.Append = true
log4j.appender.F.Threshold = INFO
log4j.appender.F.MaxFileSize = 1
log4j.appender.F.MaxBackupIndex = 5
log4j.appender.F.layout = org.apache.log4j.PatternLayout
log4j.appender.F.layout.ConversionPattern = [%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n

三:感受

     1)使用配置文件來控制日志的輸出,相當的靈活方便,對於業務程序本身的耦合性也變得最低了,這也是在實際的工作中常常使用的一種方式

     2)我這里為了方便演示和研究配置文件怎么配置的,就沒有加入其它框架了,也沒有采用建一個JavaWeb項目通過配置文件的方式來控制了,實際工作中應該如此的

     3)這里的關注點是配置文件怎么配置,我在注釋中做了足夠多的說明,如果看過前面的博文,對於這些東西相對一定很容易理解,畢竟日志框架就是干這些事情的

     4)這里列舉的配置方式並不完整,畢竟還有許多的日志輸出目的地不在其內,不過他們是常用的

     5)每一個還是要好好的試驗一下,理解起來才更深刻的,否則下次項目出問題了,項目負責人讓你解決,你都不知道到哪里找日志文件來分析的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM