我使用log4j的时候怎么总是报找不到 log4j:ERROR Could not read configuration file [log4j.properties].啊?

haocxa 2004-10-17 06:23:06
我用一个jsp调用javabean
bean里面有一句PropertyConfigurator.configure("log4j.properties"); 这样写就说找不到配置文件。

我把他改成PropertyConfigurator.configure("c:\\log4j.properties"); 放到c盘根目录下去,就可以

请问,这个配置文件到底改如何写,才能找到?
...全文
4679 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
baffling 2004-10-21
  • 打赏
  • 举报
回复
gz
haocxa 2004-10-19
  • 打赏
  • 举报
回复
回楼上的

//Properties log4jConf = new Properties();
//log4jConf.load(ProLog.class.getResourceAsStream("/log4j.properties"));
//PropertyConfigurator.configure(log4jConf);

其中ProLog是我写的类名,这个需要换成你自己的名字。 通过这样的方法,可以根据类所在路径找到绝对物理地址。



另外,这是一个较完整的输出信息配置

下面给出得Log4J配置文件实现了输出到控制台,文件,回滚文件,发送日志邮件,输出到数据库日志表,自定义标签等全套功能。

log4j.rootLogger=DEBUG,CONSOLE,A1,im
#DEBUG,CONSOLE,FILE,ROLLING_FILE,MAIL,DATABASE

log4j.addivity.org.apache=true


###################
# Console Appender
###################
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=DEBUG
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n


#####################
# File Appender
#####################
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=file.log
log4j.appender.FILE.Append=false
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
# Use this layout for LogFactor 5 analysis



########################
# Rolling File
########################
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLING_FILE.Threshold=ERROR
log4j.appender.ROLLING_FILE.File=rolling.log
log4j.appender.ROLLING_FILE.Append=true
log4j.appender.ROLLING_FILE.MaxFileSize=10KB
log4j.appender.ROLLING_FILE.MaxBackupIndex=1
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n


####################
# Socket Appender
####################
log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender
log4j.appender.SOCKET.RemoteHost=localhost
log4j.appender.SOCKET.Port=5001
log4j.appender.SOCKET.LocationInfo=true
# Set up for Log Facter 5
log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n


########################
# Log Factor 5 Appender
########################
log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000


########################
# SMTP Appender
#######################
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.Threshold=FATAL
log4j.appender.MAIL.BufferSize=10
log4j.appender.MAIL.From=chenyl@hollycrm.com
log4j.appender.MAIL.SMTPHost=mail.hollycrm.com
log4j.appender.MAIL.Subject=Log4J Message
log4j.appender.MAIL.To=chenyl@hollycrm.com
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n


########################
# JDBC Appender
#######################
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
log4j.appender.DATABASE.user=root
log4j.appender.DATABASE.password=
log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n


log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=SampleMessages.log4j
log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'
log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout

###################
#自定义Appender
###################
log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender

log4j.appender.im.host = mail.cybercorlin.net
log4j.appender.im.username = username
log4j.appender.im.password = password
log4j.appender.im.recipient = corlin@cybercorlin.net

log4j.appender.im.layout=org.apache.log4j.PatternLayout
log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

haocxa 2004-10-18
  • 打赏
  • 举报
回复
这个问题,我已经解决了。
答案是 必须加一"/" !

PropertyConfigurator.configure("/log4j.properties"); 这样就行了。 这么简单的问题,怎么就没有人帮我指出来呢?? 唉。。。 结果我到处查资料弄了2个多小时。

另外付另外一种写法:
//Properties log4jConf = new Properties();
//log4jConf.load(ProLog.class.getResourceAsStream("/log4j.properties"));
//PropertyConfigurator.configure(log4jConf);
这样也行。 给和我有同样问题的朋友一些参考。

不管怎么样,感谢上面回我贴的朋友!
harryzhangred 2004-10-18
  • 打赏
  • 举报
回复
我测试结果如下,我真不懂为什么了,那个log4j.properties文件放在tomcat\bin目录下,同时生成的文件也在bin下面,这样就不再需要加那个“/”,但写出来的logs里面还有很多的其它debug内容,我想会不会我的那个站点加了Struts的原因呢?我要是把这个文件放在classes下确实不成,但如果用完整路径是没有问题。
harryzhangred 2004-10-18
  • 打赏
  • 举报
回复
必须加一"/" !

我加了也不行,出错说找不到["/log4j.properties],真不懂了,代码与楼上的很相近。

//Properties log4jConf = new Properties();
//log4jConf.load(ProLog.class.getResourceAsStream("/log4j.properties"));
//PropertyConfigurator.configure(log4jConf);

ProLog.class.getResourceAsStream这句在编译时就出错呀,老兄你是如何成功的呀,谢谢你了。我也初玩Log4j,用的测试代码都与你一样。就是出错找不到这个文件,真是急死我了。
harryzhangred 2004-10-18
  • 打赏
  • 举报
回复
以上多余了,只要把那个log4j.properties放在classes下,tomcat启动的时候它自动会加载log4j的配置信息,在程式代码不再需要使用PropertyConfigurator.configure("log4j.properties");来加载,如果用了它反而会出现上面的错误。但如果你把log4j.properties文件放在tomcat\bin下就不会有出错提示。

还有一点,log4j.appender.A1.File=example.log,象这个example.log输出时是放在tomcat\bin下的。

我的测试结果如上,现在是搞掂了这个log4j写入文件,但还要测试把它的信息放在mysql中,希望大家相互学习。
Tasia 2004-10-17
  • 打赏
  • 举报
回复
Properties logger = new Properties();
try{
logger.load("log4j.properties");
}catch(ClassNotFoundException e){
e.printStackTrace();
}

找不到文件的话会有提示应在什么目录的。
haocxa 2004-10-17
  • 打赏
  • 举报
回复
我把代码贴出来吧。 帮我看看这么写有问题吗?都说配置文件我是放在/WEB-INF/classes就可以自动找到,怎么我这就找不到啊。

bean的代码:

import org.apache.log4j.*;
import java.util.Properties;
import java.io.InputStream;

public class log4jbean {

static Logger logger = Logger.getLogger(log4jbean.class.getName());


public log4jbean() {
}

public static void LogSave()
{
PropertyConfigurator.configure("log4j.properties");
logger.info("Entering application.");
}


}



jsp的代码


<%@ page contentType="text/html; charset=GBK" import="log4jtest.*"%>
<html>
<head>
<title>
test
</title>
</head>
<body bgcolor="#ffffff">
<h1>
log4jtesting...
</h1>
<%
log4jbean.LogSave();
%>
</body>
</html>


配置文件

log4j.rootLogger=debug, B1

#打印到文件

#log4j.appender.A1=org.apache.log4j.RollingFileAppender

#log4j.appender.A1.File=example.log

#log4j.appender.A1.MaxFileSize=100KB

#log4j.appender.A1.MaxBackupIndex=1

#log4j.appender.A1.layout=org.apache.log4j.PatternLayout

#log4j.appender.A1.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n



#打印到控制台

log4j.appender.B1=org.apache.log4j.ConsoleAppender

log4j.appender.B1.layout=org.apache.log4j.PatternLayout

log4j.appender.B1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n

log4j.appender.B1.layout.ConversionPattern=%m%n


haocxa 2004-10-17
  • 打赏
  • 举报
回复
配置文件我是放在/WEB-INF/classes下面的啊。 结果还是报那个错。
PropertyConfigurator.configure("log4j.properties"); 这样写,还需要做什么设置吗?
chenyun2000 2004-10-17
  • 打赏
  • 举报
回复
放到/WEB-INF/classes目录下
haocxa 2004-10-17
  • 打赏
  • 举报
回复
这样的问题对高手来说是很简单的啊。帮帮我吧。

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧