gpt4 book ai didi

logging - 在 Intellij IDEA 中从 TestNG 运行测试时的 OpenEJB Logger 配置

转载 作者:行者123 更新时间:2023-12-02 16:46:10 25 4
gpt4 key购买 nike

从 IntelliJ 运行测试时配置日志输出时遇到问题。

我所做的每项更改似乎都没有效果。

我通过 ApplicationComposer 使用 @Module 注释运行测试。

    @Listeners(ApplicationComposerListener.class)
public class TestLogs {

private static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, TestLogs.class);

@Module
@Classes(cdi=true,value = {
})
public EjbModule ejbModule() throws Exception {
EjbModule ejbModule = new EjbModule(new EjbJar());
System.setProperty("openejb.home", "../../../build/ejbhome");
System.setProperty("openejb.deployments.classpath.include",".*(my_app).*");
System.setProperty("ejb.jndi.name.app", getClass().getSimpleName());
System.setProperty("ejb.jndi.name.module", ejbModule.getModuleId());
System.setProperty("log4j.category.OpenEJB","off");
return ejbModule;
}


@Test
public void testLog_LoggingIsOff() {
LOGGER.info("*********************************************************");
}
}

当我运行测试时,带有通配符的日志行会打印在控制台中,尽管我设置了应该关闭 OpenEJB 类别日志的配置。

<小时/>

编辑

有效的解决方案:

  1. 在调试/运行配置的 JDK 设置选项卡上的 VM 选项中提供以下设置(而不是在 @JvmParams 注释中,因为它是在 JuliLogStreamFactory 之后加载的)

    -Djava.util.logging.config.file=path\to\\file.logging.properties
  2. 在配置文件中提供相关的文件处理程序

    handlers = org.apache.openejb.log.FileHandler, java.util.logging.ConsoleHandler
    .level = INFO

    org.apache.openejb.log.FileHandler.level = FINE
    org.apache.openejb.log.FileHandler.directory = logs
    org.apache.openejb.log.FileHandler.prefix = my_tests_log.
    org.apache.openejb.log.FileHandler.formatter = java.util.logging.SimpleFormatter


    java.util.logging.ConsoleHandler.level = SEVERE
    java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

    java.util.logging.SimpleFormatter.format = %1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS.%1$tL %4$s [location: %2$s] %5$s%6$s%n
<小时/>

不工作的东西:

我尝试关闭日志记录的方法:

  1. System.setProperty("log4j.category.OpenEJB","off");
  2. 上一条语句中所有大小写的卷积
  3. 在 IntelliJ 中设置环境变量运行/调试配置
  4. 将以下文件 embedded.logging.properties 放入 ../../../build/ejbhome:

    log4j.rootLogger           = fatal,C
    log4j.category.OpenEJB = off
    log4j.category.OpenEJB.server = info
    log4j.category.OpenEJB.startup = info
    log4j.category.OpenEJB.startup.service = warn
    log4j.category.OpenEJB.startup.config = info
    log4j.category.OpenEJB.hsql = info
    log4j.category.CORBA-Adapter = info
    log4j.category.Transaction = warn
    log4j.category.org.apache.activemq = error
    log4j.category.org.apache.geronimo = error
    log4j.category.openjpa = error

    log4j.appender.C = org.apache.log4j.ConsoleAppender
    log4j.appender.C.layout = org.apache.log4j.SimpleLayout
  5. 将名称为 log4j.embedded.logging.properties 的同一文件放入 ../../../build/ejbhome

  6. 将名为 jndi.properties 的同一文件放入 ../../../build/ejbhome
  7. 将这3个文件放入模块dir/conf
  8. 使用项目结构 -> 依赖项将IntelliJ类路径设置为上面的目录

这两种方式都不会影响行输出。

最佳答案

OpenEJB 默认使用 JUL,因此您只需在 JVM 上的任何 JVM 设置 java.util.logging.config.file 上配置 JUL,并使用 JUL 语法而不是 log4j 语法(通过默认 log4j 不在类路径中)。

另一种方法是在应用程序编辑器属性中添加(@Configuration):

openejb.jul.forceReload=true
# custom handler impl
openejb.jul.consoleHandlerClazz = com.company.MyHandler
# then jul properties, see org.apache.openejb.util.JuliLogStreamFactory.OpenEJBLogManager for advanced usage

关于logging - 在 Intellij IDEA 中从 TestNG 运行测试时的 OpenEJB Logger 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39226545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com