运行 在 Intellij IDEA 中从 TestNG 进行测试时的 OpenEJB 记录器配置
OpenEJB Logger configuration when running tests from TestNG in Intellij IDEA
我在从 IntelliJ 进行 运行ning 测试时配置日志输出时遇到问题。
我所做的每项更改似乎都没有效果。
我 运行 通过 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");
- 前面语句中upper/lower个案例的所有卷积
- 在 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
-> Dependencies
将 IntelliJ 类路径设置为上面的目录
这两种方式都不会影响线路输出。
OpenEJB 默认使用 JUL,因此您只需要像在任何 JVM 设置 java.util.logging.config.file JVM 上一样配置 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
我在从 IntelliJ 进行 运行ning 测试时配置日志输出时遇到问题。
我所做的每项更改似乎都没有效果。
我 运行 通过 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");
- 前面语句中upper/lower个案例的所有卷积
- 在 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
->Dependencies
将 IntelliJ 类路径设置为上面的目录
这两种方式都不会影响线路输出。
OpenEJB 默认使用 JUL,因此您只需要像在任何 JVM 设置 java.util.logging.config.file JVM 上一样配置 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