【发布时间】:2016-08-30 11:40:33
【问题描述】:
从 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 类别的日志。
编辑
确实有效的解决方案:
-
在 Debug/Run 配置的 JDK 设置选项卡上的 VM 选项中提供以下设置(而不是在 @JvmParams 注释中,因为它是在 JuliLogStreamFactory 之后加载的)
-Djava.util.logging.config.file=path\to\\file.logging.properties -
在配置文件中提供相关的文件处理程序
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 中设置环境变量
Run/Debug configurations -
将以下文件
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 - 使用
Project Structure将 IntelliJ 类路径设置为上述目录 ->Dependencies
这两种方式都不会影响线路输出。
【问题讨论】:
标签: logging log4j apache-tomee openejb