log4j.xml 基本配置
1 簡介
一般log4j的xml配置方式基本步驟有3個,第一步:配置appender;第二步:配置logger;第三步:配置root。下面配置一個ConsoleAppender和兩個DailyRollingFileAppender為例具體展開。
1.1 日誌級別
不考慮其他因素,日記級別FATAL>ERROR>WARN>INFO>DEBUG,這個是許多同學都清楚的,但是結合appender,logger,root的配置後,日誌列印的結果會發生一些微妙的變化。
首先,root的中的日誌級別在使用者沒有為某一個具體的logger配置日誌級別的時候才會對該logger生效。這裡就可以用來解釋有的同學問為什麼在root中配置了ERROR級別,但是日誌中依舊有INFO的日誌輸出。
其次,如果某一個appender配置了日誌過濾器,那使用該appender的logger配置日誌級別的時候,範圍不超出appender過濾的級別資訊才會被輸出。
2 配置appender
圖2-1是一個標準的ConsoleAppender配置:
圖 2‑1
如註釋所描述,ConsoleAppender一般在我們除錯專案時候用處比較大,這裡不再多餘描述。
圖2-2是一個標準的FileAppender配置,這裡我配置了一個info.log檔案和一個eror.log,位於/opt/logs目錄下面,分別用來記錄一般訊息和錯誤訊息。
圖 2‑2
appender的配置相對比較簡單,除了過濾器,沒有特殊要注意的。
3 配置logger
圖3-1是兩種looger配置。
圖 3‑1
logger的name屬性指代的是程式包路徑,不用贅述。additivity屬性,表示是否遵循預設的繼承機制。
需要注意:
1如果我們配置了true,那我們最好不要再給該logger配置appender-ref屬性,除非被配置的appender-ref我們沒有繼續新增在root的appender-ref中,否則我們會發現日誌重複。
2如果我們配置了false,那就必須為該logger配置appender-ref,否則日誌不會被列印。
4 配置root
圖4-1是一個標準的root配置。
圖 4‑1
root的作用是是收集所有配置的logger(additivity=true)反饋上來的資訊流並且根據root中配置的appender-ref進行輸出,所以,如果我們logger配置了additivity=true,又配置了appender-ref,會導致日誌重複。
注意:這裡的level值對那些沒有配置日誌級別,而且additivity=true的logger才會有作用。
下面是具體的配置資訊:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configurationxmlns:log4j='http://jakarta.apache.org/log4j/' > <!--對於ConsoleAppender來說,在開發階段還是比較有用的,能直接在ide中看到輸出的日誌內容, 但是在實際的產品階段,我們更希望將日誌輸出到指定的檔案上檢視,這就需要用到FileAppender--> <appendername="CONSOLE" class="org.apache.log4j.ConsoleAppender"> <paramname="encoding" value="UTF-8" /> <layoutclass="org.apache.log4j.PatternLayout"> <paramname="ConversionPattern" value="%d %-5p %t %l %m%n" /> </layout> <!--如果有過濾器,當前appender只會處理滿足過濾器條件的日誌資訊--> <!--<filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="levelMin" value="DEBUG" /> <param name="levelMax" value="FATAL" /> <param name="AcceptOnMatch" value="true" /> </filter>--> </appender> <!-- 寫到遠端日誌 --> <appendername="DEFAULT-APPENDER-REMOTE" class="org.apache.log4j.net.SyslogAppender"> <paramname="SyslogHost" value="${logServer}"/> <paramname="Facility" value="LOCAL1"/> <paramname="FacilityPrinting" value="true"/> <layoutclass="org.apache.log4j.PatternLayout"> <paramname="ConversionPattern" value="%d %-5p %t %c %m%n" /> </layout> </appender> <appendername="FRAMEWORK-APPENDER-REMOTE" class="org.apache.log4j.net.SyslogAppender"> <paramname="SyslogHost" value="${logServer}"/> <paramname="Facility" value="LOCAL3"/> <paramname="FacilityPrinting" value="true"/> <layoutclass="org.apache.log4j.PatternLayout"> <paramname="ConversionPattern" value="%d %-5p %t %c %m%n" /> </layout> </appender> <!-- 寫到本地日誌 --> <!--第一步:配置appender--> <appendername="INFO-LOCAL" class="org.apache.log4j.DailyRollingFileAppender"> <paramname="file" value="/opt/logs/info.log" /> <paramname="append" value="true" /><!--一般必須配置true,否則會覆蓋而不是累加--> <paramname="encoding" value="UTF-8" /> <layoutclass="org.apache.log4j.PatternLayout"> <paramname="ConversionPattern" value="%d %-5p %t %l %m%n" /> </layout> <!--如果有過濾器,日誌檔案中就只會有符合過濾器的日誌資訊--> <filterclass="org.apache.log4j.varia.LevelRangeFilter"> <paramname="levelMin" value="DEBUG" /> <paramname="levelMax" value="INFO" /> <paramname="AcceptOnMatch" value="true" /> </filter> </appender> <appendername="ERROR-LOCAL" class="org.apache.log4j.DailyRollingFileAppender"> <paramname="file" value="/opt/logs/error.log" /> <paramname="append" value="true" /><!--一般必須配置true,否則會覆蓋而不是累加--> <paramname="encoding" value="UTF-8" /> <layoutclass="org.apache.log4j.PatternLayout"> <paramname="ConversionPattern" value="%d %-5p %t %l %m%n" /> </layout> <!--如果有過濾器,日誌檔案中就只會有符合過濾器的日誌資訊--> <filterclass="org.apache.log4j.varia.LevelRangeFilter"> <paramname="levelMin" value="WARN" /> <paramname="levelMax" value="FATAL" /> <paramname="AcceptOnMatch" value="true" /> </filter> </appender> <!--第二步:配置logger。 如果不配置,系統會採用預設策略,即additivity="true",level value="DEBUG"。 注意:additivity=true,表示遵循預設的繼承機制,此時就不應該繼續配置appender-ref,否則日誌會出現重複 相反,如果additivity=false,就必須要配置appender-ref,否則日誌不會被列印,配置也就沒有意義--> <loggername="com.test.log4j" additivity="true"> <!--給具體的logger配置日誌級別,比如com.test包下面日誌級別大於等於DEBUG的, 才會交給appender進行處理。 注意:對於com.test包而言,此處的級別會覆蓋root下面的日誌級別--> <levelvalue="INFO" /> <!--如果此處配置了append-ref,而且additivity="true",將會和root裡面的同一個 append-ref形成累加,即重複日誌--> <!--<appender-ref ref="CONSOLE" />--> <!--<appender-ref ref="DEFAULT-LOCAL"/>--> <!--<appender-ref ref="ERROR-LOCAL"/>--> </logger> <loggername="com.test2" additivity="false"> <levelvalue="INFO" /> <appender-refref="INFO-LOCAL" /> </logger> <!--第三步:配置root--> <!--root的作用是收集所有配置的logger反饋上來的資訊流並根據配置在root中appender進行輸出, 只要你在looger中配置了additivity="false",就不會反饋到root中。--> <root> <!--優先順序小於具體的logger中配置的級別,只有當具體的logger沒有配置的時候, 這裡才會對具體的looger起作用--> <levelvalue="DEBUG" /> <appender-refref="CONSOLE" /> <appender-refref="INFO-LOCAL" /> <appender-refref="ERROR-LOCAL"/> </root> </log4j:configuration>
相關推薦
log4j.xml 基本配置
1 簡介 一般log4j的xml配置方式基本步驟有3個,第一步:配置appender;第二步:配置logger;第三步:配置root。下面配置一個ConsoleAppender和兩個DailyRollingFileAppender為例具體展開。 1.
Maven 默認 SpringMVC-servlet.xml 基本配置
視圖解析 scan version suffix prope 精確 設置 schema sources <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframe
log4j.xml簡單配置樣例說明
一:測試環境與log4j(一)——為什麼要使用log4j?一樣,這裡不再重述 二:老規矩,先來個栗子,然後再聊聊感受 (1)這裡栗子有一點特別呀!給出了包名唉!想必有用,是的,配置檔案中要特別說明一下的 package test.log4j.test8; import
Spring boot pom.xml基本配置
<parent> <groupId>org.springframework.boot</groupId> <artifactId>sprin
maven專案spring-mybatis.xml 基本配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSc
log4j.xml 中配置多個輸出檔案
現在的專案中,對於日誌的配置,我們有時候需要配置對應不同的輸出日誌檔案,例如按照模組劃分,按照功能劃分,分別輸出到不同的日誌檔案中,下面介紹一下,怎麼配置不同的輸出日誌檔案。 下面是一整塊的log4j.xml配置。如果對怎麼配置spring 和 log4j不瞭解的話,可以參
log4j日誌基本配置(感覺基礎真的很重要)
log4j日誌基本配置 在專案的classpath下或者resource包下(maven專案)新建一個log4j.properties檔案,初始專案配置如下引數就夠了 通過根日誌記錄器指定日誌級別及輸出源 日誌輸出的優先順序: debug < info
maven的settings.xml基本配置
1. 設定本地倉庫位置 <localRepository>E:\Repertory\RepMaven</localRepository> 2. 將阿里雲作為映
struts2通用的web.xml基本配置
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.
SpringMVC之web.xml基本配置
web.xml檔案的作用: 1.指定webapp的名稱 <display-name>SpringMVCDemo</display-name> 2.初始化上下文引數,裝載spring配置 <context-param> <param-
log4j.xml 簡單配置 列印 mybatis 執行的 sql 語句
網上的資料眼花繚亂 , 因為太詳細所以懶得看,下面我就說最簡單的方式,也是專案中常常使用的方式!1)下載jar包<dependency><groupId>log4j</groupId><artifactId>log4j</
log4j.xml簡單配置實現在控制檯列印sql執行語句
先上配置程式碼! <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <!--控制檯輸出sql執行過程--> <appender name="CO
mybatis的mapper.xml基本配置
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mappe
Struts2框架(二) Web.xml, Struts.xml, Action.Java 基本配置
str web.xml images ava img ima blog XML ges Struts2框架(二) Web.xml, Struts.xml, Action.Java 基本配置
java:Mybatis框架1(基本配置,log4j)
屬性 apache led sta sql inpu ack ima 文件中 1.mybatis01: db.properties: driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3
java-log4j-xml配置 category、logger、boot 標簽使用
sina 運放 oot margin XML www inf ava app 掌盞撐貝貪下參鴉傺疑http://www.docin.com/sina_6367437814 於鋅中儀蕾柯檀遜渦塗鼓蛔僑http://www.docin.com/sina_6370801430
java-log4j-xml配置category、logger、boot標簽使用
cin com 標簽 oci ddn tar boot xml配置 使用 卑閑洶誌較黴園錳譖釩蒂http://jz.docin.com/ami17633 綴兄怯烈幕怪杖曝嶽脖擋扯http://shufang.docin.com/ami17633 斬莆曰聞藝諫糜粗順迅吹h
struts-2.5.14.1 中web.xml的基本配置
pat default odin instance rep log tsp http apach <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2
Maven的pom.xml文件結構之基本配置packaging和多模塊聚合結構(微服務)
second maven項目 支持 其中 jar maven 所有 了解 ack 1. packaging packaging給出了項目的打包類型,即作為項目的發布形式,其可能的類型。在Maven 3中,其可用的打包類型如下: jar,默認類型 war ejb ear r
Maven的pom.xml文件結構之基本配置parent和繼承結構[轉]
mon AI wrap ace neu port lai net 文件 1.Maven項目的繼承 Maven項目之間不僅存在多模塊的聚合關系,而且Maven項目之間還可以存在相互繼承的關系。 Maven項目之間的繼承關系通過<parent>表示,在子