请记住,使用OpenEJB记录器获得的覆盖能力适用于系统属性以及InitialContext属性.
openejb.logger.external属性实际上是针对集成OpenEJB的服务器,例如Geronimo,他们使用不同的日志系统并需要对日志记录进行高级控制.它不是为常用而设计的,因为启用了此选项并且没有采取其他步骤,您没有任何类型的日志记录,甚至没有ERROR,也没有关于失败部署的信息.即使正确使用仍将禁用下面讨论的所有选项.
如果希望将测试配置输入或输出测试,可以通过多种方式完成测试,而不会丢失OpenEJB提供的任何日志记录功能.
选项1:通过InitialContext属性在代码中
在测试用例中,通过InitialContext属性
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory");
p.put("log4j.rootLogger", "fatal,C");
p.put("log4j.category.OpenEJB", "warn");
p.put("log4j.category.OpenEJB.options", "warn");
p.put("log4j.category.OpenEJB.server", "warn");
p.put("log4j.category.OpenEJB.startup", "warn");
p.put("log4j.category.OpenEJB.startup.service", "warn");
p.put("log4j.category.OpenEJB.startup.config", "warn");
p.put("log4j.category.OpenEJB.hsql", "warn");
p.put("log4j.category.CORBA-Adapter", "warn");
p.put("log4j.category.Transaction", "warn");
p.put("log4j.category.org.apache.activemq", "error");
p.put("log4j.category.org.apache.geronimo", "error");
p.put("log4j.category.openjpa", "warn");
p.put("log4j.appender.C", "org.apache.log4j.ConsoleAppender");
p.put("log4j.appender.C.layout", "org.apache.log4j.SimpleLayout");
p.put("openejb.nobanner", "false");
Context context = new InitialContext(p);
选项2:jndi.properties文件
文件必须位于任何评估为“/jndi.properties”的路径的类路径中,因此不是“/META-INF/jndi.properties”
在Maven中,可以通过将文件放在src / test / resources / jndi.properties来完成
log4j.rootLogger = fatal,C
log4j.category.OpenEJB = warn
log4j.category.OpenEJB.options = warn
log4j.category.OpenEJB.server = warn
log4j.category.OpenEJB.startup = warn
log4j.category.OpenEJB.startup.service = warn
log4j.category.OpenEJB.startup.config = warn
log4j.category.OpenEJB.hsql = warn
log4j.category.CORBA-Adapter = warn
log4j.category.Transaction = warn
log4j.category.org.apache.activemq = error
log4j.category.org.apache.geronimo = error
log4j.category.openjpa = warn
log4j.appender.C = org.apache.log4j.ConsoleAppender
log4j.appender.C.layout = org.apache.log4j.SimpleLayout
openejb.nobanner = false
请注意,查找和读取jndi.properties文件是java vm的功能,因此如果它不起作用,则更可能是配置问题而不是vm错误.
选项3:Maven Surefire配置
org.apache.maven.plugins
maven-surefire-plugin
2.5
fatal,C
warn
warn
warn
warn
warn
warn
warn
warn
warn
error
error
warn
org.apache.log4j.ConsoleAppender
org.apache.log4j.SimpleLayout
false
选项4:任何组合
另请注意,所有上述技术都可以一次使用,包括您希望在各个测试用例中添加的任何覆盖.优先顺序如下:
> InitialContext属性
>类路径中的jndi.properties
>系统属性(在这种情况下,通过surefire设置)
> classpath中的embedded.logging.properties
选项5:申请功能
一如既往,我们非常乐意以任何方式让事情变得更轻松.如果您有特定的需求或想法,我们很乐意尝试使用它,或者如果您想要贡献,可以帮助您实现它.