问题标签 [log4j]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3319 浏览

java - 为什么我的 Jnlp 程序不能与 log4j 一起使用?

我有以下问题:我在 Tomcat 中部署了一个 JNLP 和一个可执行的 JAR 文件。JNLP 文件应该会自动下载 JAR 文件并执行它。JAR 文件经过签名和验证。这完成了(下载部分)。但是当执行JAR主类(在JNLP文件中指定)时,出现了一个问题:执行了部分主类代码。之后,当它尝试加载一个声明了 static final org.apache.log4j.Logger 实例的类时,它会说一个错误。

下面是 JNLP 文件的代表部分、代码和错误。

JNLP

主要类:

问题类:

和错误:

log4j:错误找不到 [log4j.dtd]。在搜索中使用了 [sun.misc.Launcher$AppClassLoader@d9f9c3] 类加载器。log4j:ERROR 无法解析 url [jar: http://localhost:8080/examples/DemoJar.jar!/log4j.xml]. java.io.FileNotFoundException:在 com.sun.jnlp.JNLPCachedJarURLConnection.getInputStream(Unknown Source) 的 com.sun.jnlp.JNLPCachedJarURLConnection.connect(Unknown Source) 中找不到 JAR 条目 log4j.dtd .xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(Unknown Source) at com.sun.org.apache.xerces.internal.impl .XMLEntityManager.startDTDEntity(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch (未知来源)在 com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(未知来源)在 com.sun.org.apache.xerces.internal.impl。DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.sun.javaws.Launcher.executeApplication(Unknown Source) at com.sun.javaws.Launcher.executeMainClass(Unknown Source) at com.sun.javaws.Launcher.doLaunchApp(Unknown Source) at com.sun.javaws.Launcher.run(Unknown Source) at java.lang.Thread.run(Unknown Source) log4j:WARN No appenders can be found for logger (巫师跑者)。log4j:WARN 请正确初始化 log4j 系统。lang.Thread.run(Unknown Source) log4j:WARN 找不到记录器(WizardRunner)的附加程序。log4j:WARN 请正确初始化 log4j 系统。lang.Thread.run(Unknown Source) log4j:WARN 找不到记录器(WizardRunner)的附加程序。log4j:WARN 请正确初始化 log4j 系统。

谢谢!

0 投票
7 回答
66113 浏览

java - 如何将 java.util.logging 发送到 log4j?

我有一个现有的应用程序,它针对 log4j 执行所有日志记录。我们使用许多其他库,这些库要么也使用 log4j,要么针对 Commons Logging 进行日志记录,最终在我们的环境中使用 log4j。我们的依赖项之一甚至针对 slf4j 进行日志记录,这也可以正常工作,因为它最终也委托给 log4j。

现在,我想将 ehcache 添加到这个应用程序中以满足一些缓存需求。以前版本的 ehcache 使用 commons-logging,这在这种情况下可以完美运行,但是从1.6-beta1 版本开始,他们已经删除了对 commons-logging 的依赖,并将其替换为 java.util.logging。

不太熟悉 java.util.logging 提供的内置 JDK 日志记录,是否有一种简单的方法可以将发送到 JUL 的任何日志消息记录到 log4j 中,这样我就可以使用现有配置并设置任何即将到来的日志记录来自ehcache?

查看 JUL 的 javadocs,看起来我可以设置一堆环境变量来更改LogManager使用的实现,也许可以使用它来将 log4j 包装Logger在 JULLogger类中。这是正确的方法吗?

具有讽刺意味的是,当(大多数)世界其他地方使用 3rd 方库时,库使用内置 JDK 日志记录会引起如此头痛。

0 投票
3 回答
24875 浏览

java - 自定义位置中的 Log4j 属性

我将 Apache Commons Logging 和 SLF4J 与 log4j 一起使用,但我也想在 conf/log4.properties 等自定义位置使用 log4j.properties。这是问题所在:

如果我使用

然后我的应用程序与 log4j 相关联,并违背了拥有 ACL 和 SLF4J 的目的。

在应用程序不知道日志记录实现是什么的情况下配置它的最佳方法是什么?

0 投票
4 回答
107341 浏览

java - 我在哪里可以在 JUnit 测试类中配置 log4j?

查看我编写的最后一个 JUnit 测试用例,我在类构造函数中调用了 log4j 的 BasicConfigurator.configure() 方法。这对于运行 Eclipse 的“作为 JUnit 测试用例运行”命令中的单个类来说效果很好。但我意识到这是不正确的:我很确定我们的主测试套件从一个进程运行所有这些类,因此 log4j 配置应该在更高的地方进行。

但是我仍然需要自己运行一个测试用例,在这种情况下我想要配置 log4j。我应该将配置调用放在哪里,以便在测试用例独立运行时运行它,而不是在测试用例作为更大套件的一部分运行时运行?

0 投票
2 回答
54383 浏览

log4j - 如何使用 log4j.xml 配置 log4j 以根据类名附加到不同的日志文件?

我想设置 log4j,以便从包 com.foo.bar 下的类生成的所有日志消息都转到 bar.log,并且从包 com.bar.blatz 下的类生成的所有日志消息都转到 blatz.log。

问题

  • 如何使用 log4j.xml 执行此操作?
  • 我知道它可以使用属性文件,但我该如何使用 XML 配置呢?
0 投票
5 回答
2960 浏览

java - 使用 Log4J 进行结构化/组合日志记录

我希望你能帮助我。

我有一个需要记录事务的网络服务。由于有很多命中,日志语句在日志文件中显得不相交/碎片化。

我已经考虑通过层传递一个 StringBuilder 实例并将语句附加到该实例,然后在向客户端返回响应之前在最后(主控制器中的 finally 子句)记录其内容一次。这似乎没有必要,我确信使用 Log4J 有一种更简洁的方法。

任何人都可以阐明这个问题吗?

谢谢

0 投票
3 回答
1664 浏览

java - 为某些用户启用 Log4j 日志记录

在 log4j.properties 文件中,我将 Level 设置为 ERROR。对于某些用户,我需要将 Level 设置为 DEBUG。我能够在运行时更改日志记录级别,但这将为同时访问应用程序的所有用户启用。是否有任何其他方法可以为选定用户启用日志记录?任何帮助将不胜感激。

0 投票
1 回答
76024 浏览

log4j - 在 DailyRollingFileAppender -log4j 中使用 MaxBackupIndex

有人可以告诉我如何在 DailyRollingFileAppender 中使用 MaxBackupIndex。我知道 RollingFileAppender 支持 maxBackupIndex 属性,但是在 DailyRollingFileAppender 中使用 MaxBackupIndex 有什么解决方法吗?

0 投票
2 回答
1825 浏览

log4j - 如何使用 Log4j 格式化为特定模式?

我想通过以下方式捕获 log4j 日志注释。可能吗 ?如果是这样,那么我的 log4j.properties 应该如何?

我的留言:2009-05-22 17:07:28

谢谢溜冰场

0 投票
8 回答
64935 浏览

java - 使用 Java 和一般情况下的日志记录:最佳实践?

有时当我看到我的日志记录代码时,我想知道我是否做得对。对此可能没有明确的答案,但我有以下担忧:

库类

我有几个库类可能会记录一些INFO消息。致命错误报告为异常。目前,我的类中有一个静态记录器实例,其类名作为日志记录名称。(Log4j 的Logger.getLogger(MyClass.class):)

这是正确的方法吗?也许这个库类的用户不想要我的实现中的任何消息,或者想要将它们重定向到特定于应用程序的日志。我应该允许用户从“外部世界”设置记录器吗?您如何处理此类案件?

一般日志

在某些应用程序中,我的类可能希望将日志消息写入未由类名称标识的特定日志。(即:)HTTP Request log做这种事情的最好方法是什么?想到了一个查找服务......