【问题标题】:How to change the logging level in log4j2 during program execution如何在程序执行期间更改 log4j2 中的日志记录级别
【发布时间】:2014-05-23 16:24:05
【问题描述】:

如果我错了,请纠正我,但似乎 log4j2.xml 必须在程序的类路径中,并且当您制作独立的可运行 .jar 文件时,类路径中的所有内容都会打包到 .jar 文件中程序。

如果是这种情况,则在将程序导出到 .jar 文件后无法更改 XML 文件。因此,似乎没有任何方法可以在不重新导出程序的情况下更改日志记录级别。

请告诉我我错了,有一种方法可以在程序运行时通过使用 JFrame 中的下拉列表来更改日志记录级别,以便用户可以选择日志记录级别。

【问题讨论】:

标签: java log4j2


【解决方案1】:

您可以使用库中包含的 Java 管理扩展 Bean(JMX Bean)来更改记录器级别:

  1. 在应用程序启动时启用 JMX 端口:

    -Dcom.sun.management.jmxremote.port=[port_num]

  2. 在执行应用程序时使用任何可用的 JMX 客户端(JVM 在 JAVA_HOME/bin/jconsole.exe 中提供了一个)。

  3. 在 JConsole 中查找“org.apache.logging.log4j2.Loggers”bean

  4. 更改记录器的级别

我最喜欢的一点是您不必修改代码或配置来管理它。这一切都是外部和透明的。

更多信息: http://logging.apache.org/log4j/2.x/manual/jmx.html

【讨论】:

    【解决方案2】:

    我以前用过这个

    LogManager.getRootLogger().setLevel(Level.DEBUG);
    

    您可以通过这种方式更改任何日志级别。

    【讨论】:

    • 不,这是针对以前版本的 log4j。我正在运行 log4j2 (rc1)。记录器对象没有setLevel 方法。至少,我找不到。
    猜你喜欢
    • 2016-03-09
    • 2018-01-17
    • 2018-06-15
    • 2014-08-21
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多