Wildfly 10 未显示调试消息

Alv*_*aza 5 java debugging logging log4j wildfly

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

在我的测试阶段(在容器外),所有日志都运行良好,所以配置很好。但是现在我已经使用相同的配置部署了应用程序,但是我的消息没有显示。这是我的 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=%d{ABSOLUTE} [%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
Run Code Online (Sandbox Code Playgroud)

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

我找到了这篇文章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>
Run Code Online (Sandbox Code Playgroud)

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

Jam*_*ins 5

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

使用当前配置查看调试消息所需要做的就是log4j.properties从部署中删除 并org.slf4j:slf4j-log4j12从 pom 中删除依赖项。然后您可以使用日志子系统来配置日志记录并打开/关闭调试日志记录。如果您使用 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)
Run Code Online (Sandbox Code Playgroud)


Alv*_*aza 1

看着这个 Wildfly 文档,我意识到我的log4j.properties文件位于错误的位置:它位于我项目的子模块中,并且必须位于META-INFEAR 模块的文件夹中。

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