【问题标题】:Log4j2 and maven - Picking wrong config fileLog4j2 和 maven - 选择错误的配置文件
【发布时间】:2014-02-26 22:30:57
【问题描述】:

我有两个使用 Log4j2 日志记录的项目(P1 和 P2)。每个项目都有各自独立的 log4j2.xml 放在 src/main/resources 目录下(根据 maven 结构)。

问题是,当我通过我的 IDE (Eclipse) 在项目(比如 P1)中运行任何程序时,它会挑选出正确的 log4j2.xml。 (可能是因为 Eclipse 正确解析了类路径)。但是当我从命令行运行相同的程序时,它会挑选出项目 P2 的 log4j2.xml。

我曾多次尝试“清理和安装”maven 项目,但无济于事。

有什么想法吗?

【问题讨论】:

  • 您能否发布两个项目的目录结构,特别是它们之间的关系?
  • 另外,如果你的目标工件是一个可执行的jar,你能不能用归档管理器打开它,检查里面是否有预期的log4j配置文件?
  • 项目 P2 是父项目。项目 P1 依赖于 P2,P1 包含我从命令行运行的可执行程序。
  • 是的,P1.jar 文件包含正确的 log4j2.xml 文件。
  • Log4J 将拾取它在类路径中找到的第一个配置文件,如果它没有专门配置为选择一个特定的文件。如果您有竞争配置,您将受到类加载器/等的摆布。考虑指定一个限定名称并将它们排除在类路径根目录之外。

标签: java maven logging configuration log4j2


【解决方案1】:

通常最好避免将配置文件放在 jar 文件中以避免这个确切的问题。如果您在这件事上没有选择,您需要控制类路径,以使带有所需 log4j2.xml 的 jar 位于带有不需要的配置文件的 jar 之前。

另外,您可以使用系统属性指定配置文件的位置:http://logging.apache.org/log4j/2.x/faq.html#config_location

【讨论】:

    猜你喜欢
    • 2018-08-27
    • 1970-01-01
    • 2018-08-11
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 2012-05-08
    相关资源
    最近更新 更多