gpt4 book ai didi

java - 用于多种环境的 log4j 模板文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:03:34 27 4
gpt4 key购买 nike

我希望有一个 WAR 文件可以在不同的环境(如开发、ci 和 prod)中工作,而 spring 环境主要满足我们的用例。每个环境的 log4j 是突出的项目之一。正如 other answers 中的建议,我们可以为每个环境配置一个 log4j 配置——但每个环境的文件中都有很多重复,唯一不同的是次要属性,如 SMTPAppender 的 toAddress 等。有没有简单的方法哪个可以使用类似模板的 log4j 配置文件,并在运行时替换每个环境不同的部分? Maven 不会在这里工作,因为它会导致编译时选择。

我能想到的一个解决方案是扩展 Log4jConfigurer 以读取一些环境变量,即。模板键值对的映射,并在将模板文件传递给 DOMConfigurator 之前用实际值替换模板文件中的模板变量。只是想检查是否有更简单的方法,或者我是否从最佳实践的角度咆哮错误的树。

提前致谢!

最佳答案

我不完全理解你的情况,但属性(property)占位符应该有所帮助: http://jvleminc.blogspot.ru/2008/05/avoid-absolute-path-in-log4j-properties.html

  1. 例如,当您指示附加文件时,在属性文件中使用占位符

    log4j.appender.file.File=${log4j.logFile}
  2. 将此占位符值作为 VM 参数传递给(网络)应用程序。 log4j 引擎将尝试解析占位符并最终返回到系统参数,因此,在我们的示例中:

    -Dlog4j.logFile=C:/logs/MyApplication.log

顺便说一句,我认为人们通常会将日志记录配置外部化,即他们使用外部 log4j.properties 文件。发布工程师根据环境管理这些配置。它还提供了更改文件和重新启动应用程序的能力,或者在某些情况下,即使不重新启动也可以更改某些值。

关于java - 用于多种环境的 log4j 模板文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25232252/

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