gpt4 book ai didi

maven - CATALINA_HOME 和 Maven + LOG4J

转载 作者:行者123 更新时间:2023-12-02 05:08:58 24 4
gpt4 key购买 nike

我在 log4j 中有这一行:

log4j.appender.FILE.File=${catalina.home}/logs/debug.log

当我从 IntelliJ 运行项目时完美运行。

但是当我尝试运行 TestNG 测试(来自 maven)时它失败了:

log4j:ERROR setFile(null,true) 调用失败。java.io.FileNotFoundException:/logs/debug.log(没有那个文件或目录)

我可以对路径进行硬编码,一切都会好起来的。但我不想要该解决方案,因为我可以部署在 ${catalina.home} 位于不同位置的各种系统上。

我在 mac 上开发,部署在 freebsd 和 centos 上。 Tomcat 一直在不同的地方。我可以使用/var/log/myapp.log 但是 ...

有没有什么方法可以用日志文件路径定义一个公共(public)变量(在 IntelliJ 中和我运行 maven 测试时可用)?

最佳答案

请尝试使用the Maven Profile${env.catalina.home}Maven Surefire Plugin:Using System Properties 不存在时将被激活.

<profile>
<id>mock-catalina-home</id>
<activation>
<property>
<name>!env.catalina.home</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14</version>
<configuration>
<encoding>UTF-8</encoding>
<systemProperties>
<property>
<name>catalina.home</name>
<value>PATH_TO_CATALINA_HOME</value>
</property>
</systemProperties>
</configuration>
</plugin>
</plugins>
</build>
</profile>

请注意,PATH_TO_CATALINA_HOME 可以通过 the Maven Properties 引用以及。例如

<systemProperties>
<property>
<name>PATH_TO_CATALINA_HOME</name>
<value>${my.dev.catalina.home}</value>
</property>
</systemProperties>

这将帮助我们将 ${my.dev.catalina.home} 定义为各种值。

希望这对您有所帮助。

关于maven - CATALINA_HOME 和 Maven + LOG4J,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15821978/

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