Logging 从Intellij IDEA中的TestNG运行测试时的OpenEJB记录器配置

Logging 从Intellij IDEA中的TestNG运行测试时的OpenEJB记录器配置,logging,log4j,apache-tomee,openejb,Logging,Log4j,Apache Tomee,Openejb,从IntelliJ运行测试时,配置日志输出时出现问题 我所做的每一个改变似乎都没有效果 我通过ApplicationComposer使用@Module注释运行测试 @Listeners(ApplicationComposerListener.class) public class TestLogs { private static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, Test

从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类别日志的配置


编辑

有效的解决方案:

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

  • 在配置文件中提供相关的文件处理程序

    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
    

  • 不工作的东西:

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

  • System.setProperty(“log4j.category.OpenEJB”、“off”)
  • 上一语句中的所有大写/小写卷积
  • 在IntelliJ
    运行/调试配置中设置环境变量
  • 将以下文件
    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
    
  • 将名为
    log4j.embedded.logging.properties的同一文件放入
    。/../../build/ejbhome

  • 将名为
    jndi.properties
    的同一文件放入
    。/../build/ejbhome
  • 将这3个文件放入模块
    dir/conf
  • 使用
    项目结构将IntelliJ类路径设置到上面的目录

  • 这两种方法都不会对行输出产生任何影响。

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

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


    谢谢编辑JVM设置确实有效。但是,我无法通过@Configuration使设置生效,因为在将配置加载到选项之前加载了JuliLogStreamFactory静态初始化。
    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
    
    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