Undertow java.util.logging:如何使用 java util logging 在运行时更改 undertow 服务器的日志记录级别

Posted

技术标签:

【中文标题】Undertow java.util.logging:如何使用 java util logging 在运行时更改 undertow 服务器的日志记录级别【英文标题】:Undertow java.util.logging: How to change logging level at runtime for undertow server using java util logging 【发布时间】:2021-01-30 23:55:19 【问题描述】:

我有一个 logging.properties,其中处理程序是 java.util.logging.FileHandler,java.util.logging.ConsoleHandler。

根记录器的默认记录级别设置为 INFO。

日志文件在启动时传递给 JVM_OPTS。

如何使用 java.util.logging 在不重新启动服务器的情况下在运行时覆盖级别以说“FINEST”或“DEBUG”?

【问题讨论】:

您是使用 Undertow 作为独立服务器还是作为 WildFly 或 JBoss EAP 的一部分? 我碰巧回到这里,因为我现在需要实现 :) 我正在使用 undertow 作为独立服务器,尽管 Wildfly jars 现在附带最新的 undertow 版本。仅供参考,这是在容器世界中使用的。 【参考方案1】:

您想使用ManagementFactory.getPlatformMXBean(PlatformLoggingMXBean.class) 来访问这些操作。最简单的方法是使用支持 MBean 访问的工具。

将JConsole 连接到Undertow(本地或远程)并使用MBean 选项卡更改记录器级别是理想的方式。一个问题是记录器名称不存在,除非代码触发了记录器的创建。您不能使用 MBean 在代码运行之前创建记录器。如果您在本地使用 JConsole,请确保它在与 Undertow 相同的帐户下运行。

    使用运行 Undertow 的同一操作系统帐户启动 JConsole。 将 Jconsole 连接到 Undertow 选择 MBean 选项卡。 为java.util.logging->Logging->Operations 展开树节点 选择setLoggerLevel。 在p0 中输入准确的记录器名称。如果是根记录器,则输入为空白。 在p1 中输入级别名称。在这种情况下,它将是 FINEST。 点击setLoggerLevel。如果操作成功,您将看到Method successfully invoked

可以使用JMXTerm 执行类似的步骤。

【讨论】:

以上是关于Undertow java.util.logging:如何使用 java util logging 在运行时更改 undertow 服务器的日志记录级别的主要内容,如果未能解决你的问题,请参考以下文章

在 Java 应用程序中实现日志记录

将信息记录到服务器的默认日志文件中

undertow简单入门

undertow workthread 设置过小

压缩 Undertow 服务器响应

Undertow 启用 url 重写