學(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中的Console 和 log4j.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