SSM框架之Log4j配置

前言


  之前搭建SSM框架的時候我們曾經配置過log4j.properties文件,那麼這個文件主要是幹什麼的呢?配置的格式有哪些?在本文中會進行相關的講解。

log4j.properties


什麼是Log4j?

  Log4j是Apache的一個開源項目,通過使用Log4j,我們可以控制日誌信息輸送的目的地是控制檯、文件、GUI組件,甚至是套接口服務器、NT的事件記錄器、UNIX Syslog守護進程等;我們也可以控制每一條日誌的輸出格式;通過定義每一條日誌信息的級別,我們能夠更加細緻地控制日誌的生成過程。最令人感興趣的就是,這些可以通過一個配置文件來靈活地進行配置,而不需要修改應用的代碼。

  所以簡單的來說,Log4j可以理解爲一個通過配置文件進行配置的日誌操作工具。

這個文件幹什麼的?

  我們都知道對一個web應用來說,日誌是非常重要的。log4j.properties這個文件就是採用Log4j操作包完成日誌部分的操作配置。

如何讓SSM框架知道這個文件?

  這是一個非常關鍵的問題,之前講道我們採用配置Log4j來完成日誌部分的操作,但是SSM框架是如何知道這個配置文件的存在並讓它起作用呢?

  在我們之間搭建的工程中web.xml文件有如下代碼描述:

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

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

這個文件配置的格式?
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
對比我們之前的log4j.properties文件,我們講解一下各部分的格式具體含義:
log4j.rootLogger=INFO,Console,File
#控制檯日誌
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以上級別日誌
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

首先對於基本格式中的配置根Logger這部分來說
log4j.rootLogger = [level] , appenderName1 , appenderName2 , …
我們的log4j.properties文件相應內容如下:
log4j.rootLogger=INFO,Console,File

其中[level]是日誌輸出級別分爲OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定義的級別。Log4j建議只使用四個級別,優先級從高到低分別是ERROR、WARN、INFO、DEBUG。通過在這裏定義的級別,您可以控制到應用程序中相應級別的日誌信息的開關。比如在這裏定義了INFO級別,則應用程序中所有DEBUG級別的日誌信息將不被打印出來。

appenderName:就是指定日誌信息輸出到哪個地方。您可以同時指定多個輸出目的地。例如:log4j.rootLogger=INFO,Console,File 配置了2個輸出地方,這個名字可以任意(如上面的Console和File),但必須與我們在後面進行的設置名字對應。例如:log4j.appender.Console中的Consolelog4j.appender.File中的File就是對應之前寫的名稱。

在看接下來配置日誌信息輸出目的地Appender配置日誌信息的格式(佈局)的部分。

Appender 爲日誌輸出目的地,Log4j提供的appender有以下幾種:

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

Layout爲日誌輸出格式,Log4j提供的layout有以下幾種:

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

那麼,我們log4j.properties的內容是否不難理解了。

#控制檯日誌
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的日誌輸出目的地爲控制檯,採用了可以靈活地指定佈局模式的格式。

至於其他的格式可以參考文章 配置Log4j

總結


到這裏,關於SSM框架日誌部分Log4j的配置講解結束了。

關於SSM框架的其他部分可以點擊 學習SSM框架那些事兒

項目github地址,有興趣的朋友可以參考: ssm-demo



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章