java - 请正确初始化log4j系统。在运行 Web 服务时

标签 java web-services log4j axis

也许问这个看起来很傻,但我很困惑。我提到了Configuring Log4j property但这似乎没有帮助。

我编写了一个简单的 Web 服务 HelloWorld。在运行它时,我收到类似这样的错误:

log4j:WARN No appenders could be found for logger (org.apache.axis.transport.http.AxisServlet). log4j:WARN Please initialize the log4j system properly.

我不知道为什么会这样。

我正在使用 Eclipse 生成 Web 服务并部署在 Tomcat 6.0 中。我查看 Axis Developer's Guide根据他们的说法

log4j.configuration=log4j.properties Use this system property to specify the name of a Log4J configuration file. If not specified, the default configuration file is log4j.properties. A log4j.properties file is provided in axis.jar.

我没有在 axis.jar 中找到 log4j.properties。

有什么帮助吗?

最佳答案

这些消息有些棘手,以至于人们创建了它以使其更清晰: https://issues.apache.org/bugzilla/show_bug.cgi?id=25747

它们的棘手之处在于,如果 Log4j 找不到它的 log4j.properties(或 log4j.xml)文件,而且如果文件很好很花哨,但从配置的角度来看,它的内容并不完整。

以下段落摘自此处: http://svn.apache.org/repos/asf/logging/log4j/tags/v1_2_9/docs/TROUBLESHOOT.html

使用附加程序将日志输出写入目标。如果没有附加程序附加到一个类别或其任何祖先,您将在尝试记录时收到以下消息:

log4j: No appenders could be found for category (some.category.name).
log4j: Please initialize the log4j system properly.

Log4j 没有默认的日志记录目标。确保所有类别都可以继承附加程序是用户的责任。这可以通过将附加程序附加到根类别来轻松实现。

您可以在 log4j documentation 中找到有关如何配置根记录器 (log4j.rootLogger) 的信息。 ,基本上是在文件开头添加一些像这样简单的东西:

log4j.rootLogger=debug, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

这应该会清除您在启动时收到的那些 WARN 消息(确保您还没有名为 stdout 的附加程序;还要注意您为根记录器,debug 将非常冗长,您应用中的每个库都将开始向控制台写入内容)。

关于log4j.properties/log4j.xml,我建议你把这个文件放在/WEB-INF/classes中重要的是让它暴露于不同的调整(激活/停用日志,更改日志级别等)。您也可以将它放在类路径中的 JAR 中(正如您在评论中指定的那样),但它将包含在存档中(希望在存档中的正确位置)并且不会像它那样容易处理在 /WEB-INF/classes 中。

关于java - 请正确初始化log4j系统。在运行 Web 服务时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6608775/

相关文章:

Java 异常和内部异常,我这样做正确吗?

java - 以下错误是什么意思?

java.lang.IllegalStateException : Target host is null

java.lang.UnsatisfiedLinkError : org. apache.log4j.nt.NTEventLogAppender.registerEventSource

java - 使用 Comparable[] 编写二分查找方法的 JUnit 测试

java - 获取托管特定网站的服务器位置

java - Spring - 如何从 Web 应用程序停止和启动 Web 服务?

使用 Netbeans 的 REST Web 服务的 Java 客户端

java - SLF4J-LOG4J 如何将未捕获的异常也保存在日志文件中

java - 如何在不更改代码的情况下更改tomcat中eclipselink的日志级别?