天天看點

SSM架構之Log4j配置前言log4j.properties總結

前言

  之前搭建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,也可以進群一起交流,比如遇到技術瓶頸、面試不過的,大家一些交流學習!