现在的位置: 首页 > 综合 > 正文

学习Log4j笔记

2012年10月20日 ⁄ 综合 ⁄ 共 3336字 ⁄ 字号 评论关闭

今天花了一天的时间来配置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.

抱歉!评论已关闭.