SSM框架之Log4j配置

學(xué)習(xí)SSM框架那些事兒
作者 Wwwwei
轉(zhuǎn)載請(qǐng)注明原創(chuàng)出處,謝謝!

前言


??之前搭建SSM框架的時(shí)候我們?cè)?jīng)配置過log4j.properties文件,那么這個(gè)文件主要是干什么的呢?配置的格式有哪些?在本文中會(huì)進(jìn)行相關(guān)的講解。

log4j.properties


什么是Log4j?

??Log4j是Apache的一個(gè)開源項(xiàng)目,通過使用Log4j,我們可以控制日志信息輸送的目的地是控制臺(tái)、文件、GUI組件,甚至是套接口服務(wù)器、NT的事件記錄器、UNIX Syslog守護(hù)進(jìn)程等;我們也可以控制每一條日志的輸出格式;通過定義每一條日志信息的級(jí)別,我們能夠更加細(xì)致地控制日志的生成過程。最令人感興趣的就是,這些可以通過一個(gè)配置文件來靈活地進(jìn)行配置,而不需要修改應(yīng)用的代碼。
??所以簡(jiǎn)單的來說,Log4j可以理解為一個(gè)通過配置文件進(jìn)行配置的日志操作工具。

這個(gè)文件干什么的?

??我們都知道對(duì)一個(gè)web應(yīng)用來說,日志是非常重要的。log4j.properties這個(gè)文件就是采用Log4j操作包完成日志部分的操作配置。

如何讓SSM框架知道這個(gè)文件?

??這是一個(gè)非常關(guān)鍵的問題,之前講道我們采用配置Log4j來完成日志部分的操作,但是SSM框架是如何知道這個(gè)配置文件的存在并讓它起作用呢?
??在我們之間搭建的工程中web.xml文件有如下代碼描述:

    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>classpath:log4j.properties</param-value>
    </context-param>

??這里就告訴了框架我們采用了Log4j配置,配置文件位置是classpath路徑下的log4j.properties文件。

這個(gè)文件配置的格式?
Log4j配置文件的基本格式如下:
#配置根Logger
log4j.rootLogger = [level] , appenderName1 , appenderName2 , …
#配置日志信息輸出目的地Appender
log4j.appender.appenderName  =  fully.qualified.name.of.appender.class 
log4j.appender.appenderName.option1  =  value1 
… 
log4j.appender.appenderName.optionN  =  valueN 
#配置日志信息的格式(布局)
log4j.appender.appenderName.layout  =  fully.qualified.name.of.layout.class 
log4j.appender.appenderName.layout.option1  =  value1 
… 
log4j.appender.appenderName.layout.optionN  =  valueN 
對(duì)比我們之前的log4j.properties文件,我們講解一下各部分的格式具體含義:
log4j.rootLogger=INFO,Console,File
#控制臺(tái)日志
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=[%p][%t][%d{yyyy-MM-dd HH\:mm\:ss}][%C] - %m%n
#普通文件日志
log4j.appender.File=org.apache.log4j.RollingFileAppender
log4j.appender.File.File=logs/ssm.log
log4j.appender.File.MaxFileSize=10MB
#輸出日志,如果換成DEBUG表示輸出DEBUG以上級(jí)別日志
log4j.appender.File.Threshold=ALL
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=[%p][%t][%d{yyyy-MM-dd HH\:mm\:ss}][%C] - %m%n

??首先對(duì)于基本格式中的配置根Logger這部分來說
log4j.rootLogger = [level] , appenderName1 , appenderName2 , …
??我們的log4j.properties文件相應(yīng)內(nèi)容如下:
log4j.rootLogger=INFO,Console,File
??其中[level]是日志輸出級(jí)別分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定義的級(jí)別。Log4j建議只使用四個(gè)級(jí)別,優(yōu)先級(jí)從高到低分別是ERROR、WARN、INFO、DEBUG。通過在這里定義的級(jí)別,您可以控制到應(yīng)用程序中相應(yīng)級(jí)別的日志信息的開關(guān)。比如在這里定義了INFO級(jí)別,則應(yīng)用程序中所有DEBUG級(jí)別的日志信息將不被打印出來。
??appenderName:就是指定日志信息輸出到哪個(gè)地方。您可以同時(shí)指定多個(gè)輸出目的地。例如:log4j.rootLogger=INFO,Console,File 配置了2個(gè)輸出地方,這個(gè)名字可以任意(如上面的Console和File),但必須與我們?cè)诤竺孢M(jìn)行的設(shè)置名字對(duì)應(yīng)。例如:log4j.appender.Console中的Consolelog4j.appender.File中的File就是對(duì)應(yīng)之前寫的名稱。

??在看接下來配置日志信息輸出目的地Appender配置日志信息的格式(布局)的部分。
??Appender 為日志輸出目的地,Log4j提供的appender有以下幾種:

org.apache.log4j.ConsoleAppender(控制臺(tái)),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天產(chǎn)生一個(gè)日志文件),
org.apache.log4j.RollingFileAppender(文件大小到達(dá)指定尺寸的時(shí)候產(chǎn)生一個(gè)新的文件),
org.apache.log4j.WriterAppender(將日志信息以流格式發(fā)送到任意指定的地方)

??Layout為日志輸出格式,Log4j提供的layout有以下幾種:

org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以靈活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的級(jí)別和信息字符串),
org.apache.log4j.TTCCLayout(包含日志產(chǎn)生的時(shí)間、線程、類別等等信息)

??那么,我們log4j.properties的內(nèi)容是否不難理解了。

#控制臺(tái)日志
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=[%p][%t][%d{yyyy-MM-dd HH\:mm\:ss}][%C] - %m%n

??appenderName為Console的日志輸出目的地為控制臺(tái),采用了可以靈活地指定布局模式的格式。
??至于其他的格式可以參考文章 配置Log4j

總結(jié)


到這里,關(guān)于SSM框架日志部分Log4j的配置講解結(jié)束了。
關(guān)于SSM框架的其他部分可以點(diǎn)擊 學(xué)習(xí)SSM框架那些事兒
項(xiàng)目github地址,有興趣的朋友可以參考: ssm-demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在應(yīng)用程序中添加日志記錄總的來說基于三個(gè)目的:監(jiān)視代碼中變量的變化情況,周期性的記錄到文件中供其他應(yīng)用進(jìn)行統(tǒng)計(jì)分析...
    時(shí)待吾閱讀 5,203評(píng)論 1 13
  • 在應(yīng)用程序中添加日志記錄總的來說基于三個(gè)目的:監(jiān)視代碼中變量的變化情況,周期性的記錄到文件中供其他應(yīng)用進(jìn)行統(tǒng)計(jì)分析...
    時(shí)待吾閱讀 5,146評(píng)論 0 6
  • 一、Log4j簡(jiǎn)介 Log4j有三個(gè)主要的組件:Loggers(記錄器),Appenders (輸出源)和Layo...
    默默守護(hù)閱讀 1,976評(píng)論 2 8
  • from:https://www.cnblogs.com/ITtangtang/p/3926665.html一、L...
    enshunyan閱讀 3,399評(píng)論 0 0
  • log4j 1.1 簡(jiǎn)介 Log4j是一個(gè)由Java編寫可靠、靈活的日志框架,是Apache旗下的一個(gè)開源項(xiàng)目;現(xiàn)...
    賈博巖閱讀 8,067評(píng)論 1 32

友情鏈接更多精彩內(nèi)容