1.Log4j的全程為Log for Java。專門用於java語言的日志記錄工具。其目前有兩個版本:Log4j和Log4j2
2.為了方便對於日志信息的輸出顯示,對日志內容進行了分級管理。日志級別由高到低,分為6個級別:fatal(致命的)、error、warn、info、debug、trace(堆棧)
3.無論是將日志輸出到控制台,還是文件,其輸出都會降低程序的運行效率。但由於調試、運行維護的需要,客戶的要求等原因,需要進行必要的日志輸出。這時就必須要在代碼中加入日志輸出語句。這些輸出語句若在程序運行時全部執行,則勢必會降低運行效率。
4.下載jar包,log4j.properties直接放到項目的src下
Logger logger = Logger.getLogger(Test.class);
log4j.properties是專門用於控制日志輸出的。其主要進行三方面控制:
輸出位置:控制日志將要輸出的位置,是控制台還是文件等
輸出布局:控制日志信息的顯示形式
輸出級別:控制要輸出的日志級別
日志屬性文件由兩個對象組成:日志附加器與根日志。
根日志:為java代碼中的日志記錄器,其主要由兩個屬性構成:日志輸出級別與日志附加器
日志附加器,則由日志輸出位置定義,由其它很多屬性進行修飾,如輸出布局、文件位置、文件大小。
5.log4j.appender.console = org.apache.log4j.ConsoleAppender; org.apache.log4j.ConsoleAppender;日志輸出到控制台
org.apache.log4j.FileAppender:日志輸出到文件
org.apache.log4j.RollingFileAppender:當日志文件大小到達指定尺寸的時候將產生一個新的日志文件
org.apache.log4j.DailyRollingFileAppender:每天產生一個日志文件
log4j.appender.console.Target = System.out
Target控制輸出到控制台的使用目標。其值為System.out或System.err。它們的區別是,out是黑色字體,err是紅色字體
log4j.appender.file.File = d:/logfile.txt
File日志要輸出的文件位置以及文件名稱
滾動文件附加器
log4j.appender.rollfile = org.apache.log4j.RollingFileAppender
log4j.appender.rollfile.MaxFileSize = 10KB
若文件超過指定值,將自動產生另一個日志文件
log4j.apender.rollfile.layout = org.apache.log4j.HTMLLayout
org.apache.log4j.HTMLLayout:網頁布局,以 HTML 表格形式布局
org.apache.log4j.SimpleLayout:簡單布局,包含日志信息的級別和信息字符串
org.apache.log4j.PatternLayout:匹配器布局,可以靈活地指定布局模式。
根配置根 Logger
配置 rootLogger,以便於代碼加載來控制日志的輸出。其語法為:
log4j.rootLogger = [ level ] , appenderName, …
其中,level 是日志記錄的優先級,分為 OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL。Log4j 建議只使用四個級別,優先級從高到低分別是 ERROR、WARN、INFO、DEBUG。OFF 為關閉日志功能。
低級別的可以顯示高級別的,但高級別的不能顯示低級別的。所以,級別越高,將來顯示的信息就越少
6.Log4j2 是對 Log4j 的升級,其在配置與使用上發生了較大變化。
使用 Log4j2,需要導入其 Jar 包。Log4j 框架解壓目錄中找到如下兩個 jar 包:
log4j-api-2.3.jar log4j-core-2.3.jar
將文件 log4j2.xml 直接放到項目的 src 下。log4j2 配置文件是 XML 文件,不再支持properties 文件。默認的文件名為 log4j2.xml。其存放的位置為 classpath 中
在要輸出日志的類中創建日志對象 Logger,並通過 Logger 的方法在代碼中加入日志輸出語句。該日志對象是通過靜態類 LogManager 的 getLogger()方法獲取的。
注意,Logger 與 LogManager 均為 org.apache.logging.log4j 包中的類,org.apache.log4j包中的。
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
Logger logger = LogManager.getLogger(Test.class);
7.配置文件說明:
<configuration/>標簽的 status 屬性用於設置 Log4j2 自身運行的日志顯示級別,一般為OFF,不顯示。當然,也可以設置為 ERROR、DEBUG 等其它級別。
<Console/>標簽的 target 屬性用於設置輸出的目標形式,其值一般為:
SYSTEM_OUT 或 SYSTEM_ERR
<Console name="myConsole" target="SYSTEM_OUT"></Console>
<File/>標簽的 fileName 屬性用於設置文件的文件保存路徑及文件名。如本例的意思是,日志文件名為 test.log,將其存放在當前項目的根目錄下的 log 子目錄中。
append 屬性用於設置是否以追加方式將日志寫入指定文件
<File name="myFile" fileName="log/test.log" append="true"></file>
<RollingFile/>標簽的<SizeBasedTriggeringPolicy/>子標簽用於指定每一個日志文件最大文件大小。當達到這個指定值后,會自動再新建一個日志文件
fileName 指定存放目錄及第一個日志文件名。filePattern 指定新創建的日志文件的文件名。本例還會對文件進行壓縮。
<RollingFile name="myRollingFIle" fileName="logs/app.log" filePatern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<SizeBasedTriggeringPolicy size="1KB"/>
</RollingFile>
<loggers/> 標簽
用於配置根 Logger 對象,以指定所使用的日志記錄器,及顯示的級別。
其子標簽<root/>用於指定所使用的日志記錄器。該子標簽的屬性 level 用於指定顯示級別。而日志記錄器是通過<root/>的子標簽<appender-ref/>來引用<appenders/>中定義好的記錄器的。
需要注意的是,只要在<appenders/>中定義了<File/>、<RollingFile/>等,且在其中指定了日志存放的目錄,那么這些目錄就會自動創建。無論在<loggers/>的<root/>中是否聲明使用它們。
<loggers>
<root level="info">
<appender-ref ref="myConsole"/>
<appender-ref ref="myLogFile"/>
<appender-ref ref="myRollingFile"/>
</root>
</loggers>
8.slf4j, Simple Logging Facade for Java,簡單日志門面。其不是具體的日志解決方案,不做具體的日志服務。它僅僅是一種規范,一個接口。而 Log4j 則是slf4j 的一種具體實現,提供具體的日志服務。
slf4j 有自己單獨的一套 API,這套 API 與具體的日志實現技術的 API 是不同的。為了能使 slf4j 的 API 與具體日志實現技術 API 結合到一起,在 slf4j 與具體日志技術之間,還需要一個連接的 jar。這個 jar 在 sfl4j 框架中存放着。slf4j-log4j12-1.7.12.jar
|