Logging 从Intellij IDEA中的TestNG运行测试时的OpenEJB记录器配置
从IntelliJ运行测试时,配置日志输出时出现问题 我所做的每一个改变似乎都没有效果 我通过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
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类别日志的配置
编辑 有效的解决方案:
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”)代码>
运行/调试配置中设置环境变量
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
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