随笔 - 18, 文章 - 0, 评论 - 8, 引用 - 0
数据加载中……

学习Log4j笔记

今天花了一天的时间来配置Log4j,没想到要那么多时间,还问了不少人,帖子也发了不少,不过最终还是搞定了,不过还有些问题,请高手帮我看看,多谢了。

1.首先是配置简单java project
现在来看log4j.propertise
#级别为DEBUG,二个输出端,分别为stdout,R
log4j.logger.helloappLogger=DEBUG, stdout, R

#控制台输出
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在当前目录下可以省略,我放在项目根目录下,和com包同目录
        logger.debug("Debug ...");
        logger.info("Info ...");
        logger.warn("Warn ...");
        logger.error("Error ...");
    }
}

2.web project中配置log4j

还是先来看log4j.perproties

#级别为DEBUG,三个输出端,分别为stdout,FILE,R
log4j.logger.hello=DEBUG, stdout, FILE, R

#stdout是在控制台输出
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/...,不要写成\,这就一点害死我了
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中,和服务器一起启动,方便其他程序使用

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自动加载这个文件

至此所有配置应该成功了,不过还是有些问题没有解决好,问了几个朋友也没有得到好的答复,但是现在可以在控制台和文件中输出日志,基本功能达到了。还请各位有空给我看看这个错误,欢迎指正。

错误如下:
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 丑男 阅读(9633) 评论(8)  编辑  收藏 所属分类: Log4j

评论

# re: 学习Log4j笔记  回复  更多评论   

看了你写的很不错.帮我解决了问题.
报那个错误应该问题不大.
我这里使用那个类加载log4j后竟然没有报那个错误了.
你可以试试把你写在web.xml中的那段<servlet>....</servlet>放在struts的actionservlet的前面.
这样它就先加载log4j了.
祝你好运.
2005-08-05 18:22 | shaokun305

# re: 学习Log4j笔记  回复  更多评论   

TO:shaokun305
多谢你的建议,但我没有成功,还是会出现那个错误
2005-08-05 22:53 | 丑男

# re: 学习Log4j笔记  回复  更多评论   

我也出现这种情况
log4j:WARN No appenders could be found for logger (org.apache.catalina.session.M
anagerBase).
log4j:WARN Please initialize the log4j system properly.
不知道什么原因,怎么也启动不了,,
不过重启一个就可以了,郁闷!
2006-09-19 10:56 | tea

# re: 学习Log4j笔记  回复  更多评论   

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

# re: 学习Log4j笔记  回复  更多评论   

@LightStaler
过奖了,老早的写了,好久没更新了
2007-05-23 01:20 | sunjavaer

# re: 学习Log4j笔记  回复  更多评论   

我也有类似情况:
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=...
试试看,估计是rootLogger可以截获所有类的log,单独的logger的范围不够大。
2007-11-09 22:35 | popkev

# re: 学习Log4j笔记  回复  更多评论   

@shaokun305
还是不可以阿?
2007-12-30 21:26 | 咯个

# re: 学习Log4j笔记  回复  更多评论   

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

只有注册用户登录后才能发表评论。


网站导航: