站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Java 专题关于log4j报错问题

关于log4j报错问题

摘要: 关于log4j报错问题


log4j:WARN No appenders could be found for logger (org.apache.catalina.startup.T
ldConfig).
log4j:WARN Please initialize the log4j system properly.

我的log4j.properties内容是

log4j.logger.ROLLING_FILE=DEBUG,console,file


log4j.appender.console=org.apache.log4j.ConsoleAppender


log4j.appender.file=org.apache.log4j.RollingFileAppender

log4j.appender.file.File=D:/Tomcat 5.0/webapps/log/log.txt


log4j.appender.console.layout=org.apache.log4j.SimpleLayout

log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%t %p - %m%n



log4j.rootLogger=DEBUG

########################
# Rolling File
########################
log4j.logger.ROLLING_FILE=DEBUG,ROLLINGfile
log4j.appender.ROLLINGfile=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLINGfile.File=D:/Tomcat 5.0/webapps/log/errlog/err.log
log4j.appender.ROLLINGfile.Append=true
log4j.appender.ROLLINGfile.MaxFileSize=1024KB
log4j.appender.ROLLINGfile.MaxBackupIndex=10
log4j.appender.ROLLINGfile.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLINGfile.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n


########################
#DailyRollingFileAppender
########################
log4j.logger.Daily_FILE=DEBUG,Dailyfile
log4j.appender.Dailyfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Dailyfile.File=D:/Tomcat 5.0/webapps/log/datelog/yingyong
log4j.appender.Dailyfile.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.Dailyfile.layout=org.apache.log4j.PatternLayout
log4j.appender.Dailyfile.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%m%n


请问我应该怎么设置




我的配置文件:

#### Use two appenders, one to log to console, another to log to a file
log4j.rootLogger=INFO,R,stdout
# Print only messages of priority WARN or higher for your category
log4j.category.your.category.name=WARN
#### First appender writes to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
#### Second appender writes to a file
log4j.appender.R=org.apache.log4j.RollingFileAppender
#### 注意必须是"/"
log4j.appender.R.File=c:/mylog.log
# Control the maximum log file size
log4j.appender.R.MaxFileSize=100KB
# Archive log files (one backup file here)
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n



在你的主程序开始执行时,或者web应用启动以后,必须在使用log4j之前加载配置文件,从显示的错误信息看,这个原因的可能性很大

xml配置文件需要org.apache.log4j.DOMConfigurator.configure(String file)来读入

property文件需要org.apache.log4j.xml.PropertyConfigurator.configure(String file)来读入




你的配置文件中没有为rootLogger指定任何的appender,只是定义了一个级别

rootLogger的配置应该按照 hellwindy(夜神·月) 所示的例子写

如果你不想使用rootLogger,应使用
public static Logger Logger.getLogger(String name)获得一个named logger
或者
public static Logger Logger.getLogger(Class clazz)获得一个named logger
在程序中获取指定的logger

你也可以参考http://blog.csdn.net/chiefwolf/archive/2006/07/12/911863.aspx



用了以上的方法还是不行
我的web.xml加了

log4j
mypack.Log4JServlet

propfile
/WEB-INF/log4j.properties

1

mypack.Log4JServlet的代码是:
package mypack;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

import org.apache.log4j.PropertyConfigurator;

public class Log4JServlet extends HttpServlet {

public void init()
throws ServletException {

// Get Fully Qualified Path to Properties File
String path = getServletContext().getRealPath("/");
String propfile = path + getInitParameter("propfile");

// Initialize Properties for All Servlets
PropertyConfigurator.configure(propfile);
}

}





在使用Logger之前,加一句:Logger.getLogger("ROLLING_FILE")

默认的logger是rootLogger,但是你没有给它加appender,你定义的logger是ROLLING_FILE,所以要指定这个logger


↑返回目录
前一篇: javax.bluetooth.* 能不能用在PC得程序开发上阿?
后一篇: 请问,数据库编程如何做单元测试呢?网络编程如何做单元测试?