学习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.