隨筆 - 18, 文章 - 0, 評(píng)論 - 8, 引用 - 0
          數(shù)據(jù)加載中……

          學(xué)習(xí)Log4j筆記

          今天花了一天的時(shí)間來(lái)配置Log4j,沒(méi)想到要那么多時(shí)間,還問(wèn)了不少人,帖子也發(fā)了不少,不過(guò)最終還是搞定了,不過(guò)還有些問(wèn)題,請(qǐng)高手幫我看看,多謝了。

          1.首先是配置簡(jiǎn)單java project
          現(xiàn)在來(lái)看log4j.propertise
          #級(jí)別為DEBUG,二個(gè)輸出端,分別為stdout,R
          log4j.logger.helloappLogger=DEBUG, stdout, R

          #控制臺(tái)輸出
          log4j.appender.stdout=org.apache.log4j.ConsoleAppender
          log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
          log4j.appender.stdout.layout.ConversionPattern=%5p (%F:%L) - %m%n

          #保存到helloappLoggerlog.txt日志中,大小為100KB
          log4j.appender.R=org.apache.log4j.RollingFileAppender
          log4j.appender.R.File=F:/code/eclipse/workspace/TestLo4j/log/helloappLoggerlog.txt
          log4j.appender.R.MaxFileSize=100KB
          log4j.appender.R.MaxBackupIndex=1
          log4j.appender.R.layout=org.apache.log4j.PatternLayout
          log4j.appender.R.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss} %-5p %c - %m%n

          java文件中用到日志
          package com;
          import org.apache.log4j.*;
          public class TestLog4j {
              static Logger logger = Logger.getLogger("helloappLogger");
              public static void main(String[] args) {
          //      PropertyConfigurator.configure("log4j.properties");
          //      如果.properties在當(dāng)前目錄下可以省略,我放在項(xiàng)目根目錄下,和com包同目錄
                  logger.debug("Debug ...");
                  logger.info("Info ...");
                  logger.warn("Warn ...");
                  logger.error("Error ...");
              }
          }

          2.web project中配置log4j

          還是先來(lái)看log4j.perproties

          #級(jí)別為DEBUG,三個(gè)輸出端,分別為stdout,FILE,R
          log4j.logger.hello=DEBUG, stdout, FILE, R

          #stdout是在控制臺(tái)輸出
          log4j.appender.stdout=org.apache.log4j.ConsoleAppender
          log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
          log4j.appender.stdout.layout.ConversionPattern=%5p (%F:%L) - %m%n

          #保存在rolling_log_file.log日志中,appender是RollingFileAppender
          #需要注意的是File=F:/code/...,不要寫成\,這就一點(diǎn)害死我了
          log4j.appender.R=org.apache.log4j.RollingFileAppender
          log4j.appender.R.File=F:/code/eclipse/workspace/TestCvs/WebRoot/WEB-INF/rolling_log_file.log
          log4j.appender.R.MaxFileSize=100KB
          log4j.appender.R.MaxBackupIndex=1
          log4j.appender.R.layout=org.apache.log4j.PatternLayout
          log4j.appender.R.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss} %-5p %c - %m%n

          #保存在log_file.log日志中,appender是FileAppender
          log4j.appender.FILE=org.apache.log4j.FileAppender
          log4j.appender.FILE.File=F:/code/eclipse/workspace/TestCvs/WebRoot/WEB-INF/log_file.log
          log4j.appender.FILE.Append=false
          log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
          log4j.appender.FILE.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss} %-5p %c - %m%n

          之后要把它加入serlet中,和服務(wù)器一起啟動(dòng),方便其他程序使用

          public class Log4jServlet extends HttpServlet {
              public void init() throws ServletException {
                  ServletContext sct = getServletContext();
                  System.out.println("[Log4j]: The Root Path: " + sct.getRealPath("/"));
                  System.out.println("[Log4j]: InitServlet init start...");
                  PropertyConfigurator.configure(sct.getRealPath("/")
                        +getServletConfig().getInitParameter("propfile"));
                  System.out.println("[Log4j]: InitServlet init over.");
              }
          }

          <servlet>
              <description>init log4j of servlet</description>
              <display-name>log4j servlet</display-name>
              <servlet-name>Log4jServlet</servlet-name>
              <servlet-class>com.testCvs.Log4jServlet</servlet-class>
              <init-param>
               <param-name>propfile</param-name>
               <param-value>/WEB-INF/log4j.properties</param-value>
              </init-param>
              <load-on-startup>1</load-on-startup>
          </servlet>

          注:log4j.properties放在/WEB-INF下,servlet自動(dòng)加載這個(gè)文件

          至此所有配置應(yīng)該成功了,不過(guò)還是有些問(wèn)題沒(méi)有解決好,問(wèn)了幾個(gè)朋友也沒(méi)有得到好的答復(fù),但是現(xiàn)在可以在控制臺(tái)和文件中輸出日志,基本功能達(dá)到了。還請(qǐng)各位有空給我看看這個(gè)錯(cuò)誤,歡迎指正。

          錯(cuò)誤如下:
          log4j:WARN No appenders could be found for logger (org.apache.jasper.compiler.JspRuntimeContext).
          log4j:WARN Please initialize the log4j system properly.

          posted on 2005-07-24 22:10 丑男 閱讀(9670) 評(píng)論(8)  編輯  收藏 所屬分類: Log4j

          評(píng)論

          # re: 學(xué)習(xí)Log4j筆記  回復(fù)  更多評(píng)論   

          看了你寫的很不錯(cuò).幫我解決了問(wèn)題.
          報(bào)那個(gè)錯(cuò)誤應(yīng)該問(wèn)題不大.
          我這里使用那個(gè)類加載log4j后竟然沒(méi)有報(bào)那個(gè)錯(cuò)誤了.
          你可以試試把你寫在web.xml中的那段<servlet>....</servlet>放在struts的actionservlet的前面.
          這樣它就先加載log4j了.
          祝你好運(yùn).
          2005-08-05 18:22 | shaokun305

          # re: 學(xué)習(xí)Log4j筆記  回復(fù)  更多評(píng)論   

          TO:shaokun305
          多謝你的建議,但我沒(méi)有成功,還是會(huì)出現(xiàn)那個(gè)錯(cuò)誤
          2005-08-05 22:53 | 丑男

          # re: 學(xué)習(xí)Log4j筆記  回復(fù)  更多評(píng)論   

          我也出現(xiàn)這種情況
          log4j:WARN No appenders could be found for logger (org.apache.catalina.session.M
          anagerBase).
          log4j:WARN Please initialize the log4j system properly.
          不知道什么原因,怎么也啟動(dòng)不了,,
          不過(guò)重啟一個(gè)就可以了,郁悶!
          2006-09-19 10:56 | tea

          # re: 學(xué)習(xí)Log4j筆記  回復(fù)  更多評(píng)論   

          good artical,could we make a firend?Contact me:)MSN:smc@rjgrid.com.cn
          2007-05-22 14:49 | LightStaler

          # re: 學(xué)習(xí)Log4j筆記  回復(fù)  更多評(píng)論   

          @LightStaler
          過(guò)獎(jiǎng)了,老早的寫了,好久沒(méi)更新了
          2007-05-23 01:20 | sunjavaer

          # re: 學(xué)習(xí)Log4j筆記  回復(fù)  更多評(píng)論   

          我也有類似情況:
          log4j:WARN No appenders could be found for logger (org.jnp.interfaces.NamingContext).
          log4j:WARN Please initialize the log4j system properly.
          我的解決方法是:
          第一行的log4j.logger.x=....改為:log4j.rootLogger=...
          試試看,估計(jì)是rootLogger可以截獲所有類的log,單獨(dú)的logger的范圍不夠大。
          2007-11-09 22:35 | popkev

          # re: 學(xué)習(xí)Log4j筆記  回復(fù)  更多評(píng)論   

          @shaokun305
          還是不可以阿?
          2007-12-30 21:26 | 咯個(gè)

          # re: 學(xué)習(xí)Log4j筆記  回復(fù)  更多評(píng)論   

          我也按照你的做法做了就是記錄不了日志
          2008-11-10 17:40 | ###

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 彰武县| 麻栗坡县| 额敏县| 民乐县| 齐齐哈尔市| 呼伦贝尔市| 高要市| 怀柔区| 惠东县| 宽城| 中牟县| 大港区| 望都县| 兴城市| 襄城县| 沅陵县| 安岳县| 富蕴县| 伊宁市| 山阴县| 屏东市| 巩留县| 米林县| 岳阳县| 林州市| 山阴县| 台东县| 南宁市| 泽州县| 雷山县| 宁德市| 达尔| 集贤县| 望谟县| 青田县| 宜黄县| 永福县| 彝良县| 靖宇县| 太谷县| 论坛|