【问题标题】:JBoss Logging for Java Unit Test?Java 单元测试的 JBoss 日志记录?
【发布时间】:2015-10-01 21:00:38
【问题描述】:

我继承了一些明确使用 JBoss Logging 实现的 java 代码。我知道这通常配置为 JBoss 子系统,并且在服务器上运行时我能够很好地观察各种日志调整操作。但是,我没有得到任何单元测试的日志消息输出。我在测试类路径中删除了几个配置文件以包括:

  • logging.properties
  • log4j.xml
  • log4j2.xml

但还没有看到任何结果。有没有人能够配置 JBoss 日志系统,以便它们在单元测试中在容器外部可见?这甚至可能吗? logging configuration guide 没有说明如何执行此操作。

【问题讨论】:

    标签: java jboss jboss-logging


    【解决方案1】:

    你可以让 log4j.xml 工作,但你需要确保你在测试类路径上有一个兼容的 vanilla log4j 版本,例如1.2.17,并且在类路径上没有修改版本 log4j-jboss-logmanager,它不读取 log4j.xml。

    详情。

    https://stackoverflow.com/a/18323126/1341535。 我拿这个:

    我建议您使用日志记录配置日志管理器 与应用服务器一起提供的子系统。这是唯一的方法 配置服务器日志记录。

    暗示在测试中配置 JBoss 日志管理器基本上是不可能的,因为没有服务器子系统配置,也没有任何东西可以解析它。也许您可以通过编程方式对其进行配置,但这太不方便了。

    所以这让我们使用带有 log4j 的 JBoss Logging 外观作为日志管理器,可以使用 log4j.xml 轻松配置。

    现在,我想起来了,Wildfly 中有一个 logging.properties 文件,它在日志子系统初始化之前配置日志记录。这意味着您可以使用 logging.properties 配置 JBoss 日志管理器,您只需要将相关的 jar 放在测试类路径中,可能是 jboss-logmanager 和 log4j-jboss-logmanager。

    【讨论】:

    • 按你的方式发送了一个赞成票,但我现在实际上已经从这个代码迁移了,所以我没有机会尝试你的解决方案来验证!你有没有测试过它是否有效?听起来很扎实。
    • @JoshC13,我们目前在我的工作中使用“log4j.xml + vanilla log4j”方法,它确实有效。
    【解决方案2】:

    我将尝试使用Arquillian Test Cases 测试代码,它具有部署部分代码的可能性,只是为了在“真实环境”中测试它。 在很多 RH JBoss 文档中都推荐它。

    您可以尝试重用您的 junit 代码,并使用本指南修改它们:http://arquillian.org/guides/getting_started/

    我不是该技术的专家。希望对你有帮助。

    【讨论】:

    • 我真正追求的是能够在容器环境外部使用jboss日志系统(根据问题)。像 arquillian 测试这样的东西可以正常工作,因为 JBoss 日志子系统将为运行应用程序的容器初始化。但是,理想情况下,我希望对单元的日志记录支持,而不是需要容器等的集成测试。
    • 好的。抱歉,这似乎是一个答案,但我还不能发表评论;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 2015-09-17
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    相关资源
    最近更新 更多