前言
之前搭建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
中的Console 和
log4j.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的配置講解結束了。
以上就是我的分享,有收獲的朋友們可以點個關注哦,如果想學習更多Java方面的知識可以進一下我的一個後端群,群裡收集了很多Java架構資料,大家可以進群免費領取資料,群号:680075317,也可以進群一起交流,比如遇到技術瓶頸、面試不過的,大家一些交流學習!