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

2022-09-01 08:44:14

也许问这个看起来很傻,但我感到困惑。我提到了配置Log4j属性,但它似乎没有帮助。

我写了一个简单的网络服务HelloWorld。在运行它时,我得到的错误是这样的:

log4j:WARN 找不到 logger 的附加器 (org.apache.axis.transport.http.AxisServlet)。log4j:警告 请正确初始化 log4j 系统。

我不知道为什么会发生这种情况。

我正在使用Eclipse生成Web服务并部署在Tomcat 6.0中。我检查安讯士开发人员指南并根据其

log4j.configuration=log4j.properties 使用此系统属性可以指定 Log4J 配置文件的名称。如果未指定,则默认配置文件为 log4j.properties。log4j.properties 文件以 axis.jar 的形式提供。

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

对此有什么帮助吗?


答案 1

这些消息是棘手的,足以让人们创建这个以使其更清晰:https://issues.apache.org/bugzilla/show_bug.cgi?id=25747

它们的棘手之处在于,如果Log4j找不到其(或)文件,则会写入警告,但如果文件很好且花哨,但从配置的角度来看其内容不完整,则会写入警告。log4j.propertieslog4j.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文档中找到有关如何配置根记录器()的信息,基本上可以在文件开头添加像这样简单的东西: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 消息(确保您还没有一个名为的追加器;还要注意您为根记录器提供的级别,这将非常详细,并且应用程序中的每个库都将开始将内容写入控制台)。stdoutdebug

至于/,我建议你把这个文件放进去,因为重要的是要让它公开用于不同的调整(激活/停用日志,更改日志级别等)。您也可以将其放在类路径的 JAR 中(如您在注释中指定的那样),但它将被包含在存档中(希望在存档中的正确位置),并且不会像在 .log4j.propertieslog4j.xml/WEB-INF/classes/WEB-INF/classes


答案 2

您必须在类路径文件夹中创建自己的。log4j.properties


推荐