gpt4 book ai didi

tomcat - 如何在 web servlet 的 jUnit 编码中管理 log4j.properties

转载 作者:行者123 更新时间:2023-11-28 21:49:08 25 4
gpt4 key购买 nike

我正在开发 web servlet 并且对 log4j.properities 感到困惑,我定义了在构造函数中调用初始化记录器。

public static Logger logger = Logger.getLogger(MyProject.class.getName());
public MyProject() {
super();
// TODO Auto-generated constructor stub
ClassLoader loader = Thread.currentThread().getContextClassLoader();
URL url = loader.getResource("log4j.properties");
PropertyConfigurator.configure(url);
}

一般情况下,关于web servlet的日志文件是指tomcat的日志目录。

log4j.rootLogger=debug, R
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${catalina.base}/logs/myproject.log
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

但是,在为 webservlet 编写 jUnit 代码时,日志文件引用了不正确的地址,因为 ${catalina.base} 是空白文本。错误日志在这里。

[junit] log4j:ERROR setFile(null,true) call failed.
[junit] java.io.FileNotFoundException: /logs/myproject.log (No such file or directory)

所以,请教我如何明智地管理日志文件。我希望在 jUnit 测试时停止输出日志文件。

最佳答案

您应该为 tomcat 部署和单元测试维护一个单独的 log4j.properties。单元测试 log4j.properties 可能会包含更多调试信息,而部署版本应尽量减少日志输出以避免拖累性能。

这样做需要您正确调整类路径,以便为单元测试选择单元测试 log4j.properties,但不会打包到 WAR 中。按照惯例,这会进入 src/test

关于tomcat - 如何在 web servlet 的 jUnit 编码中管理 log4j.properties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9249982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com