blog-moon

          導(dǎo)航

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          統(tǒng)計(jì)

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          Office

          Websphere

          數(shù)據(jù)庫(kù)

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          轉(zhuǎn):Log4J基本知識(shí)及用法

          1、Log4j的概念
          Log4j中有三個(gè)主要的組件,它們分別是Logger、Appender和Layout,Log4j 允許開發(fā)人員定義多個(gè)Logger,每個(gè)Logger擁有自己的名字,Logger之間通過(guò)名字來(lái)表明隸屬關(guān)系。有一個(gè)Logger稱為Root,它永遠(yuǎn)存在,且不能通過(guò)名字檢索或引用,可以通過(guò)Logger.getRootLogger()方法獲得,其它Logger通過(guò) Logger.getLogger(String name)方法。
          Appender則是用來(lái)指明將所有的log信息存放到什么地方,Log4j中支持多種appender,如 console、files、GUI components、NT Event Loggers等,一個(gè)Logger可以擁有多個(gè)Appender,也就是你既可以將Log信息輸出到屏幕,同時(shí)存儲(chǔ)到一個(gè)文件中。
          Layout的作用是控制Log信息的輸出方式,也就是格式化輸出的信息。
          Log4j中將要輸出的Log信息定義了5種級(jí)別,依次為DEBUG、INFO、WARN、ERROR和FATAL,當(dāng)輸出時(shí),只有級(jí)別高過(guò)配置中規(guī)定的級(jí)別的信息才能真正的輸出,這樣就很方便的來(lái)配置不同情況下要輸出的內(nèi)容,而不需要更改代碼,這點(diǎn)實(shí)在是方便啊。

          2、Log4j的配置文件
          雖然可以不用配置文件,而在程序中實(shí)現(xiàn)配置,但這種方法在如今的系統(tǒng)開發(fā)中顯然是不可取的,能采用配置文件的地方一定一定要用配置文件。Log4j支持兩種格式的配置文件:XML格式和Java的property格式,本人更喜歡后者,首先看一個(gè)簡(jiǎn)單的例子吧,如下:

          log4j.rootLogger=debug, stdout, R
          log4j.appender.stdout=org.apache.log4j.ConsoleAppender
          log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

          # Pattern to output the caller's file name and line number.
          log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

          log4j.appender.R=org.apache.log4j.RollingFileAppender
          log4j.appender.R.File=example.log
          log4j.appender.R.MaxFileSize=100KB

          # Keep one backup file
          log4j.appender.R.MaxBackupIndex=1

          log4j.appender.R.layout=org.apache.log4j.PatternLayout
          log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

          首先,是設(shè)置root,格式為 log4j.rootLogger=[level],appenderName, ...,其中l(wèi)evel就是設(shè)置需要輸出信息的級(jí)別,后面是appender的輸出的目的地,appenderName就是指定日志信息輸出到哪個(gè)地方。您可以同時(shí)指定多個(gè)輸出目的地。配置日志信息輸出目的地Appender,其語(yǔ)法為
          log4j.appender.appenderName = fully.qualified.name.of.appender.class
          log4j.appender.appenderName.option1 = value1
          ...
          log4j.appender.appenderName.option = valueN
          Log4j提供的appender有以下幾種:
          org.apache.log4j.ConsoleAppender(控制臺(tái))
          org.apache.log4j.FileAppender(文件)
          org.apache.log4j.DailyRollingFileAppender(每天產(chǎn)生一個(gè)日志文件)
          org.apache.log4j.RollingFileAppender(文件大小到達(dá)指定尺寸的時(shí)候產(chǎn)生新文件)
          org.apache.log4j.WriterAppender(將日志信息以流格式發(fā)送到任意指定的地方)
          配置日志信息的格式(布局),其語(yǔ)法為:
          log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
          log4j.appender.appenderName.layout.option1 = value1
          ....
          log4j.appender.appenderName.layout.option = valueN
          Log4j提供的layout有以下幾種:
          org.apache.log4j.HTMLLayout(以HTML表格形式布局),
          org.apache.log4j.PatternLayout(可以靈活地指定布局模式),
          org.apache.log4j.SimpleLayout(包含日志信息的級(jí)別和信息字符串),
          org.apache.log4j.TTCCLayout(包含日志產(chǎn)生的時(shí)間、線程、類別等等信息)

          3、Log4j在程序中的使用
          要在自己的類中使用Log4j,首先聲明一個(gè)靜態(tài)變量Logger logger=Logger.getLog("classname");在使用之前,用PropertyConfigurator.configure ("配置文件")配置一下,現(xiàn)在就可以使用了,用法如下:logger.debug("debug message")或者logger.info("info message"),看下面一個(gè)小例子:

          import com.foo.Bar;
          import org.apache.log4j.Logger;
          import org.apache.log4j.PropertyConfigurator;
          public class MyApp {
          static Logger logger = Logger.getLogger(MyApp.class.getName());
          public static void main(String[] args) {
          // BasicConfigurator replaced with PropertyConfigurator.
          PropertyConfigurator.configure(args[0]);
          logger.info("Entering application.");
          Bar bar = new Bar();
          bar.doIt();
          logger.info("Exiting application.");

          posted on 2006-05-10 22:14 moon 閱讀(158) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 桂阳县| 德格县| 交城县| 内江市| 巴塘县| 娄烦县| 自贡市| 文山县| 平凉市| 南平市| 武功县| 祁连县| 盖州市| 分宜县| 天台县| 建湖县| 德清县| 武穴市| 靖江市| 海城市| 榆树市| 镇巴县| 陆川县| 盱眙县| 台南县| 海原县| 南漳县| 澳门| 禄劝| 彭阳县| 郎溪县| 石家庄市| 青龙| 庐江县| 西林县| 乌什县| 南开区| 兴隆县| 武强县| 泰来县| 婺源县|