2

我想将文件记录到我的应用程序中。
我为此尝试了 Appach log4j。在 Java 代码中,我说:

        Logger log = Logger.getLogger(uploadfile.class);
        log.debug("Start");

我创建文件src\log4j.properties

# ***** Set root logger level to DEBUG and its only appender to A.
log4j.rootLogger=DEBUG, R, A
log4j.rootLogger=INFO, A

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.MaxFileSize=100mb
log4j.appender.R.MaxBackupIndex=1000
log4j.appender.R.File=c:/uploaded_files/server.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d [%t] %-5p %c - %m%n


# ***** A is set to be a ConsoleAppender.
log4j.appender.A=org.apache.log4j.ConsoleAppender
# ***** A uses PatternLayout.
log4j.appender.A.Threshold=INFO
log4j.appender.A.layout=org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

log4j.logger.org.hibernate.type.BasicTypeRegistry=INFO
log4j.logger.com.opensymphony.xwork2.config.providers.XmlConfigurationProvider=INFO

我在那里复制这个。我得到错误:

  13.02.2013 9:03:34 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [uploadfile] in context with path [/gis-mrsk-portlet] threw exception [Servlet execution threw an exception] with root cause
java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.LogManager
at org.apache.log4j.Logger.getLogger(Logger.java:117)
at test.uploadfile.doPost(uploadfile.java:35)

我做错了什么?以及如何简单地配置 log4j?

更新

如果我使用这个配置,我会得到日志文件,但它是空的:

Set root category priority to INFO and its only appender to CONSOLE.
log4j.rootCategory=INFO, CONSOLE, LOGFILE

Set the enterprise logger priority to FATAL
log4j.logger.org.apache.axis2.enterprise=FATAL
log4j.logger.de.hunsicker.jalopy.io=FATAL
log4j.logger.httpclient.wire.header=FATAL
log4j.logger.org.apache.commons.httpclient=FATAL

 CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[%p] %m%n

 LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=C:/uploaded_files/LogFile.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n
4

3 回答 3

1

似乎正确..您是否正确设置了路径中的 log4j Lib?

于 2013-02-13T09:14:47.207 回答
1

问题不在于您的配置,问题在于不存在 log4j 对 catalina的支持,让它协同工作并不容易。要使 log4j 与 catalina 一起工作,请遵循http://tomcat.apache.org/tomcat-6.0-doc/logging.html#Using_Log4j上的文档。

编辑

总结我给出的链接:

  1. [...] 将 log4j.jar 和 log4j.properties 放入 Web 应用程序的 WEB-INF/lib 和 WEB-INF/classes 中。

  2. 下载或构建可用作 Tomcat 的“附加”组件的 tomcat-juli.jar 和 tomcat-juli-adapters.jar。有关详细信息,请参阅附加组件文档。http://tomcat.apache.org/tomcat-6.0-doc/extras.html

遵循这些步骤后,您的示例应该已经可以工作了。

/编辑

如果您想要简单的日志记录部分,我建议您使用 logback,它带有对基于 tomcat 的应用程序的本机 servlet 支持。如果您想在日志记录方面更进一步:clusterlog.net(完全披露我拥有该公司的一部分)

于 2013-02-13T09:19:49.320 回答
0

java.lang.NoClassDefFoundError

看起来您的 Apache 不知道org.apache.log4j.LogManager. 你把所需的 jar 放在 Apache 中了classpath吗?

于 2013-02-13T09:11:49.293 回答