【发布时间】:2015-12-10 10:38:34
【问题描述】:
我有一个具有 log4j 配置的网络应用程序。此配置在指定要放置日志文件的路径时使用系统属性 catalina.home。
现在我正在准备集成 junit 测试套件,该套件会加载 嵌入式码头 并加载此 Web 应用程序(然后我使用 rest 调用等进行测试)。我的问题是,由于这个 web 应用程序现在是从码头加载的 catalina.home 系统属性没有预先指定使日志文件存储在 windows C:/logs 的根目录中/...
我需要一种方法来指定要从码头使用的 catalina.home。最初我尝试使用:
System.setProperty("catalina.home", "target/jetty/tests/");
但这似乎被忽略了。
我无法弄清楚为什么上述方法不起作用以及如何使其起作用。任何人都可以在这里提出一些建议吗?有没有人遇到过同样的问题?
【问题讨论】:
-
启动 junit 测试程序时添加 -Dcatalina.home=target/jetty/tests/ 有帮助吗?
-
斜坡 1:不幸的是没有。无论哪种方式,我都希望以编程方式从单元测试中准备环境
-
您确定 Jetty 正在使用该 log4j 配置吗? Jetty 没有直接支持 log4j,您可能会看到非 log4j 输出并假设它生成了 log4j。
-
我确定,创建的日志文件的名称、相对路径和日志消息模式都是在 log4j 中指定的。
-
对我的预览消息进行更正以提升。我更喜欢以编程方式指定属性。您的 -Dcatalina.home=target/jetty/tests/ 解决方案有效。我第一次在 intelij environmnet 属性而不是 vm 选项中指定它。现在再次尝试,这似乎可以解决问题。我可以以编程方式执行此操作吗?
标签: java web-applications log4j jetty