posts - 20,  comments - 7,  trackbacks - 0

          ?? Log4j 有三個(gè)主要的組件: Loggers Appenders Layouts ,即日志類別,日志要輸出的地方和日志以何種形式輸出。

          1 Loggers

          ??? Loggers 組件在此系統(tǒng)中被分為六個(gè)級(jí)別: TRACE DEBUG INFO WARN ERROR FATAL

          2 Appenders

          ??Log4j 日志系統(tǒng)允許把日志輸出到不同的地方,如控制臺(tái)( Console )、文件( Files )、根據(jù)天數(shù)或者文件大小產(chǎn)生新的文件、以流的形式發(fā)送到其它地方等等。

          其語法表示為:

          org.apache.log4j.ConsoleAppender (控制臺(tái))

          org.apache.log4j.FileAppender (文件)

          org.apache.log4j.DailyRollingFileAppender (每天產(chǎn)生一個(gè)日志文件)

          org.apache.log4j.RollingFileAppender (文件大小到指定尺寸時(shí)產(chǎn)生一個(gè)新的文件)

          org.apache.log4j.WriterAppender (將日志信息以流格式發(fā)送到任意指定的地方)

          3 Layouts

          ???Log4j 可以在 Appenders 的后面附加 Layouts 來完成這個(gè)功能。 Layouts 提供了四種日志輸出樣式,如根據(jù) HTML 樣式、自由指定樣式、包含日志級(jí)別與信息的樣式和包含日志時(shí)間、線程、類別等信息的樣式等等。

          其語法表示為:

          org.apache.log4j.HTMLLayout (以 HTML 表格形式布局)

          org.apache.log4j.PatternLayout (可以靈活地指定布局模式)

          org.apache.log4j.SimpleLayout (包含日志信息的級(jí)別和信息字符串)

          org.apache.log4j.TTCCLayout (包含日志產(chǎn)生的時(shí)間、線程、類別等等信息)

          ?

          ? 在實(shí)際編程時(shí),要使 Log4j 真正在系統(tǒng)中運(yùn)行事先還要對(duì)配置文件進(jìn)行定義。定義步驟就是對(duì) Logger Appender Layout 的分別使用,具體如下:

          1 配置根 Logger ,其語法為:
          ??? log4j.rootLogger = [ level ] , appenderName, appenderName, …

          level Logger 的優(yōu)先級(jí),

          appenderName 是日志信息的輸出地,可以同時(shí)指定多個(gè)輸出地。

          如: log4j.rootLogger= INFO,A1,A2


          2
          配置日志信息輸出目的地 ,其語法為:
          ??? log4j.appender.appenderName = fully.qualified.name.of.appender.class
          ???
          可以指定上述五個(gè)目的地中的一個(gè)。

          3 配置日志信息的格式 ,其語法為:
          ??? log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
          ??

          下面給出一個(gè)具體配置例子,在程序中可以參照?qǐng)?zhí)行:
          ??? log4j.rootLogger=INFO,A1
          ??? log4j.appender.A1=org.apache.log4j.ConsoleAppender
          ?? ?log4j.appender.A1.layout=org.apache.log4j.PatternLayout
          ??? log4j.appender.A1.layout.ConversionPattern=
          ??????????????????????????????????????? %-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
          ???

          這里需要說明的就是日志信息格式中幾個(gè)符號(hào)所代表的含義:
          X 號(hào) : X 信息輸出時(shí)左對(duì)齊;
          ?? %p:
          日志信息級(jí)別
          ?? %c:
          日志信息所在地(類名),通常就是所在類的全名
          ?? %m:
          產(chǎn)生的日志具體信息
          ?? %n:
          輸出日志信息換行, Windows 平臺(tái)為“ \r\n ”, Unix 平臺(tái)為“ \n
          ? %r
          輸出自應(yīng)用啟動(dòng)到輸出該 log 信息耗費(fèi)的毫秒數(shù)

            %t 輸出產(chǎn)生該日志事件的線程名

            %d 輸出日志時(shí)間點(diǎn)的日期或時(shí)間,默認(rèn)格式為 ISO8601 ,也可以在其后指定格式,比如: %d{yyy MMM dd HH:mm:ss,SSS} ,輸出類似: 2002 10 18 22 10 28 921

            %l 輸出日志事件的發(fā)生位置,包括類目名、發(fā)生的線程,以及在代碼中的行數(shù)。

          ?

          4 、讀取配置文件

          其語法為:

          BasicConfigurator.configure () 自動(dòng)快速地使用缺省 Log4j 環(huán)境。

          PropertyConfigurator.configure ( String configFilename) :讀取使用 Java 的特性文件編寫的配置文件。

          DOMConfigurator.configure ( String filename ) :讀取 XML 形式的配置文件。

          ?

          log4j 配置,一般可以采用兩種方式 .properties .xml
          一、 log4j.properties
          # 設(shè)置對(duì)應(yīng)的級(jí)別 INFO,DEBUG,WARN,ERROR 和輸出地 A1 A2
          log4j.category.com.test =ERROR,A1
          log4j.category.com.test=INFO, A2
          ###
          設(shè)置輸出地 A1 ,為 ConsoleAppender( 控制臺(tái) ) ##
          log4j.appender.A1=org.apache.log4j.ConsoleAppender
          ###
          設(shè)置 A1 的輸出布局格式 PatterLayout( 可以靈活地指定布局模式) ##
          log4j.appender.A1.layout=org.apache.log4j.PatternLayout
          ###
          配置日志輸出的格式 ##
          log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n
          ###
          設(shè)置輸出地 A2 到文件(文件大小到達(dá)指定尺寸的時(shí)候產(chǎn)生一個(gè)新的文件) ##
          log4j.appender.A2=org.apache.log4j.RollingFileAppender
          ###
          文件位置 ##
          log4j.appender.A2.File=C:/log4j/log.html
          ###
          文件大小 ##
          log4j.appender.A2.MaxFileSize=500KB
          log4j.appender.A2.MaxBackupIndex=1
          ##
          指定采用 html 方式輸出
          log4j.appender.A2.layout=org.apache.log4j.HTMLLayout

          二、 log4j.xml

          <?xml version="1.0" encoding="GB2312" ?>
          <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

          <appender name="com.test.all" class="org.apache.log4j.RollingFileAppender">
          <param name="File" value="
          C:/log4j/log. log" />

          <!-- 設(shè)置是否在重新啟動(dòng)服務(wù)時(shí),在原有日志的基礎(chǔ)添加新日志 -->
          <param name="Append" value="false" />
          <param name="MaxBackupIndex" value="10" />
          <!-- 設(shè)置輸出文件項(xiàng)目和格式 -->
          <layout class="org.apache.log4j.PatternLayout">
          ??? <param name="ConversionPattern" value="%p (%c:%L)- %m%n" />
          </layout>
          </appender>

          <appender name="com.test.file " class="org.apache.log4j.RollingFileAppender">
          <param name="File" value="
          C:/log4j/output .log" />
          <param name="Append" value="true" />
          <param name="MaxFileSize" value="10240" />
          <param name="MaxBackupIndex" value="10" />
          <layout class="org.apache.log4j.PatternLayout">
          ?????? <param name="ConversionPattern" value="%p (%c:%L)- %m%n" />
          </layout>
          </appender>

          <logger name="test.log">
          ? <level value="debug" /><!-- 設(shè)置級(jí)別 -->
          ? <appender-ref ref="com.test.file" /><!-- 與前面的通道id相對(duì)應(yīng) -->
          </logger>

          <root> <!-- 設(shè)置接收所有輸出的通道 -->
          ?? <appender-ref ref=" com.test.all" /><!-- 與前面的通道id相對(duì)應(yīng) -->
          </root>
          </log4j:configuration>


          三、配置文件加載方法:

          import org.apache.log4j.Logger;
          import org.apache.log4j.PropertyConfigurator;
          import org.apache.log4j.xml.DOMConfigurator;

          public class Log4jApp {
          ?? public static void main(String[] args) {
          ?????? DOMConfigurator.configure("
          C:/log4j/ log4j.xml");
          ?????? //PropertyConfigurator.configure("
          C:/log4j/ log4j.properties");
          ?????? Logger log=Logger.getLogger("com.test");
          ?????? log.info("Testing log.info()");
          ?? }
          }

          posted on 2006-08-14 22:33 Lizzie 閱讀(1295) 評(píng)論(0)  編輯  收藏 所屬分類: 專業(yè)積木

          <2006年8月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章分類

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 乐安县| 邻水| 泰来县| 泽普县| 广灵县| 巍山| 随州市| 赣州市| 海淀区| 南昌市| 威远县| 翼城县| 安福县| 南丹县| 晋州市| 崇明县| 奉节县| 乐东| 达拉特旗| 沂南县| 金华市| 辽宁省| 怀宁县| 桦川县| 长子县| 大荔县| 富顺县| 鄄城县| 东乌珠穆沁旗| 景德镇市| 吉林省| 靖远县| 稻城县| 蓬莱市| 唐海县| 邵武市| 雅江县| 渭源县| 阿荣旗| 平阴县| 安仁县|