Wildfly 10 不显示调试消息

Posted

技术标签:

【中文标题】Wildfly 10 不显示调试消息【英文标题】:Wildfly 10 not showing debug messages 【发布时间】:2016-11-15 10:21:43 【问题描述】:

我正在容器上测试我的 ear 应用程序,我需要查看一些我在我的应用程序上传播的调试消息。我使用slf4j-apilog4j 作为日志框架。

在我的测试阶段(在容器外),所有日志记录都运行良好,因此配置很好。但是现在我已经使用相同的配置部署了应用程序,但我的消息没有显示。这是我的 log4j 的配置:

#rootLogger config
log4j.rootLogger=INFO, console

#appender config
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console..threshold=DEBUG
log4j.appender.console.target=System.out
log4j.appender.console.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.console.layout.ConversionPattern=%dABSOLUTE [%t] %p %l - %m%n

# Log JDBC bind parameter runtime arguments
log4j.logger.org.hibernate.type=INFO

#application logger config
log4j.logger.ar.edu.unt.sigea=DEBUG, console

正如我所说,当我运行 @Test 方法时,我的所有 logger.debug() 消息都正确显示,但现在我在具有相同配置的容器上运行,没有显示调试消息。

我找到了this post 并按照答案的建议添加了log4j.appender.console..threshold=DEBUG 行,但没有用。

我正在 Wildfly-10.0.0.Final 应用服务器上进行部署,并且正在使用此日志记录依赖项:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.21</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.21</version>
</dependency>

我错过了什么?我应该去哪里寻找?提前感谢您的回答

【问题讨论】:

您是否尝试过更改 Wildfly 的日志记录级别? standalone/configuration/standalone.xml 并找到标签 &lt;subsystem xmlns="urn:jboss:domain:logging:3.0"&gt;。更改您想要的记录器。 感谢@Apostolos,我正在阅读文档,如果您现在知道如何配置standalone-full.xml(这是我正在使用的文件),请将其发布为答案。 我认为这是一回事。如果这对您有用,请让我将其发布为接受它的答案。谢谢 【参考方案1】:

除非您想使用自己的 log4j 配置,否则您不需要使用 log4j 绑定。从配置文件来看,您似乎只是在使用 WildFly 日志记录子系统已经提供的控制台附加程序。

要查看当前配置的调试消息,您只需从部署中删除 log4j.properties 并从 pom.xml 中删除 org.slf4j:slf4j-log4j12 依赖项。然后,您可以使用日志记录子系统来配置日志记录并打开/关闭调试日志记录。如果您使用 CLI 或 Web 控制台,则无需重新启动服务器即可更改日志记录级别。

添加调试级别并将默认的console-handler 级别更改为DEBUG。以下两个 CLI 命令是配置调试日志记录所需的全部内容。

/subsystem=logging/logger=ar.edu.unt.sigea:add(level=DEBUG)
/subsystem=logging/console-handler=CONSOLE:write-attribute(name=level, value=DEBUG)

【讨论】:

这可以解决问题,谢谢!并删除使用:/subsystem=logging/logger=ar.edu.unt.sigea:remove【参考方案2】:

查看this Wildfly Documentation 我意识到我的log4j.properties 文件位于错误的位置:它在我的项目的子模块中,并且必须在EAR 模块的META-INF 文件夹中。

默认情况下,Wildfly 采用部署的日志记录配置,因此在 standalone.xml(或 standalone-full.xml,具体取决于您使用的配置文件,这是我的情况)中不需要额外配置。

【讨论】:

【参考方案3】:

在控制台将日志级别切换为 DEBUG

wildfly/bin/jboss-cli.sh --connect

[standalone@localhost:9990 /] /subsystem=logging/console-handler=CONSOLE:write-attribute(name=level,value=DEBUG)

[standalone@localhost:9990 /] /subsystem=logging/root-logger=ROOT:write-attribute(name=level,value=DEBUG)

将其切换回初始配置(此处为 INFO)

[standalone@localhost:9990 /] /subsystem=logging/console-handler=CONSOLE:write-attribute(name=level,value=INFO)

[standalone@localhost:9990 /] /subsystem=logging/root-logger=ROOT:write-attribute(name=level,value=INFO)

发件人:https://gist.github.com/lfryc/aae879ceb5534292e150

【讨论】:

以上是关于Wildfly 10 不显示调试消息的主要内容,如果未能解决你的问题,请参考以下文章

Wildfly 上的 JMS 2.0 QueueBrowser 不返回消息

将 Android Studio 升级到 2.3 后调试控制台不显示消息

Wildfly 独立通过网络启动不工作

调试 Chrome -> Google Cast 消息传递

调试器代理未启用

C 调试中的递归线性搜索