今天花了一天的時間來配置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.