Java jenkins和生产服务器的不同log4j配置

Java jenkins和生产服务器的不同log4j配置,java,jenkins,log4j,Java,Jenkins,Log4j,我正在我的linux服务器上的/logs/MyApp目录下转储日志文件(log4j),并且工作正常。应用程序(EAR)是使用Jenkins构建的,我正在为此编写junit测试用例。问题是log4j文件appender的位置不会指向jenkins服务器文件系统,而是相对于我的linux服务器 Log4j.appender.App.File = /logs/MyApp/AppLogs.log 当从jenkins执行测试用例时,这会导致错误,因为log4j文件位置不存在 log4j:错误setFil

我正在我的linux服务器上的
/logs/MyApp
目录下转储日志文件(log4j),并且工作正常。应用程序(EAR)是使用Jenkins构建的,我正在为此编写junit测试用例。问题是log4j文件appender的位置不会指向jenkins服务器文件系统,而是相对于我的linux服务器

Log4j.appender.App.File = /logs/MyApp/AppLogs.log
当从jenkins执行测试用例时,这会导致错误,因为log4j文件位置不存在

log4j:错误setFile(null,true)调用失败。 java.io.FileNotFoundException:/logs/MyApp/Applogs.log(没有这样的文件 (或目录)


我如何配置log4j与jenkins一起工作,而不更改已为我的生产环境设置的当前配置。

有几种方法可以解决此问题:

  • 在Jenkins主/从目录中创建目录。如果有一个新奴隶,这是不可持续的
  • 更改log4j配置,使您拥有不同的log4j配置—一个用于生产,一个用于本地测试,另一个用于Jenkins。(这就是Play framework的功能,对于不同的配置文件,您会得到不同的日志文件)
  • 您可以将其作为Jenkins作业的参数传递(或在env var中设置)并在Jenkins中使用
  • 如果可能,不要在log4j配置中使用绝对路径 (1) 我不能改变我的jenkins服务器上的目录结构(2)我想您正在谈论为jenkins和prod env创建单独的maven概要文件。我将尝试配置不同的配置文件,看看会发生什么,谢谢