gpt4 book ai didi

spring - 如何使用 Spring Boot 使用外部 log4j.xml 配置文件?

转载 作者:行者123 更新时间:2023-12-03 03:53:29 25 4
gpt4 key购买 nike

我创建了一个 Spring Boot 项目,并希望在我的 jar 中使用外部 log4j.xml 配置文件。我使用的命令行是这样的:

java -Dlog4j.debug -Dlog4j.configuration=file:/tmp/log4j.xml -jar /tmp/project.jar

从调试来看,它看起来实际上正确加载了 log4j.xml,但在加载 log4j.xml 后不久,它就加载了 spring-boot jar 文件内的 log4j.properties,该文件覆盖了我的 log4j .xml。有没有办法忽略 spring-boot jar 文件中的 log4j.properties?

log4j: Using URL [file:/tmp/log4j.xml] for automatic log4j configuration.
log4j: Preferred configurator class: org.apache.log4j.xml.DOMConfigurator
log4j: System property is :null
log4j: Standard DocumentBuilderFactory search succeded.
log4j: DocumentBuilderFactory is: com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
log4j: debug attribute= "null".
log4j: Ignoring debug attribute.
log4j: reset attribute= "false".
log4j: Threshold ="null".
log4j: Retreiving an instance of org.apache.log4j.Logger.
log4j: Setting [com.test] additivity to [true].
log4j: Level value for com.test is [trace].
log4j: com.test level set to TRACE
log4j: Retreiving an instance of org.apache.log4j.Logger.
log4j: Setting [org.springframework.core] additivity to [true].
log4j: Level value for org.springframework.core is [info].
log4j: org.springframework.core level set to INFO
log4j: Retreiving an instance of org.apache.log4j.Logger.
log4j: Setting [org.springframework.beans] additivity to [true].
log4j: Level value for org.springframework.beans is [info].
log4j: org.springframework.beans level set to INFO
log4j: Retreiving an instance of org.apache.log4j.Logger.
log4j: Setting [org.springframework.context] additivity to [true].
log4j: Level value for org.springframework.context is [info].
log4j: org.springframework.context level set to INFO
log4j: Retreiving an instance of org.apache.log4j.Logger.
log4j: Setting [org.springframework.web] additivity to [true].
log4j: Level value for org.springframework.web is [info].
log4j: org.springframework.web level set to INFO
log4j: Level value for root is [warn].
log4j: root level set to WARN
log4j: Class name: [org.apache.log4j.RollingFileAppender]
log4j: Setting property [file] to [/var/log/app/app.log].
log4j: Setting property [maxFileSize] to [5000KB].
log4j: Setting property [maxBackupIndex] to [5].
log4j: Parsing layout of class: "org.apache.log4j.PatternLayout"
log4j: Setting property [conversionPattern] to [%d{yyyy-MM-dd'T'HH:mm:ss.SSSZZZZ} %-5.5p [%-15.15t][%30.30c{2}#%17.17M]: %m%n].
log4j: setFile called: /var/log/app/app.log, true
log4j: setFile ended
log4j: Adding appender named [R] to category [root].
log4j: Reading configuration from URL jar:file:/tmp/project.jar!/lib/spring-boot-1.2.2.RELEASE.jar!/org/springframework/boot/logging/log4j/log4j.properties
log4j: Parsing for [root] with value=[INFO, CONSOLE].
log4j: Level token is [INFO].
log4j: Category root set to INFO
log4j: Parsing appender named "CONSOLE".
log4j: Parsing layout options for "CONSOLE".

最佳答案

我知道已经有一段时间了,但我刚刚遇到了同样的问题,所以也许我可以提供帮助。

首先,确保外部文件的名称与内部 log4j.xml 的名称不同。作为示例,我们将其命名为 log4j-tmp.xml。现在,除了 log4j.configuration 之外,您只需在命令行中定义 logging.config 即可:

java -Dlog4j.debug -Dlogging.config=file:/tmp/log4j-tmp.xml -Dlog4j.configuration=file:/tmp/log4j-tmp.xml -jar /tmp/project.jar

您还可以将 application.properties 复制到 jar 外部(Spring Boot 将搜索外部配置文件并使用它们而不是 jar 的配置文件)并定义 logging.config=path/to/log4j-tmp.xml 其中,但是当您可以通过命令行添加它时,仅为一个属性复制整个配置文件是没有意义的。

关于spring - 如何使用 Spring Boot 使用外部 log4j.xml 配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32078317/

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