spring - Spring Log4j2 xml文件位置
问题描述
将 Spring 2.0.5 与 Log4j2 一起使用 如果我将文件 log4j2.xml 放在资源文件夹中,则发现工作正常。但是,发现 monitorInterval="60" 的 log4j2 选项非常有用,就好像某些生产问题可以在不重新启动的情况下增加某些类的日志记录一样。但是,如果 log4j2.xml 嵌入到 jar 中,它当然不能被修改。到目前为止,我能做的最好的事情是使用 2 个 log4j2.xml 副本,一个在资源中,另一个在运行 jar 的文件夹中。
然后我可以运行:
java -Dlog4j.configurationFile=log4j2.xml -jar myapp.jar
如果从 maven spring-boot 插件或 Eclipse 开始,它似乎工作相同。尝试了很多方法,例如设置类路径、绝对文件名等,但没有运气
我的问题是如何从资源文件夹中删除 log4j2.xml 文件并仅在启动 spring 时在命令行上指定它?
解决方案
我对你的问题并不完全清楚,但我可以提供以下信息,希望能解决这个问题:
- Log4j 2.12.0 增加了对 Spring Cloud Config 的支持,增强了对 Spring Boot 的支持。从该版本开始,您可以包含一个名为 log4j2.system.properties 的文件,并在其中放置您想要定义的任何系统属性。它们将在 Log4j 初始化之前设置。因此,如果需要,您可以在此处指定配置的完整 URL,而不是命令行。您还可以将定义添加到名为 log4j2.component.properties 的文件中。
- 对 Spring Cloud Config 的支持允许您将配置放置在 Spring Cloud Config 服务器中。有关更多详细信息,请参阅Spring CLoud Config 支持。
- Spring Boot 初始化日志记录至少 3 次。第一个通常是因为 SpringApplication 类声明了一个 Logger,因此在其他任何事情发生之前初始化日志记录。其配置将使用“正常”log4j 2 初始化。之后,Spring 影响日志记录初始化的方式主要是因为 Spring Boot 设置类路径以将 jars 包含在 Spring Boot jar 中的 BOOT-INF/lib 目录中。
通过使用我上面概述的配置选项之一,您可以将日志配置移到应用程序之外,并且您不需要在资源目录中进行日志配置。实际上,如果您查看 Log4j 中的示例 Spring Cloud Config Application,您会发现它不包含配置文件。
推荐阅读
- audio-recording - 如何使用 IAudioCaptureClient 录制立体声音频数据?
- c# - MySql 字符编码问题——货币符号(¤)
- php - 使用 MOVE_TO_FILE 将文件输入插入 BD
- javascript - 使用 document.execCommand("copy") 复制电子邮件地址
- amazon-web-services - boto3 s3 generate_presigned_url ExpiresIn 无法按预期工作
- solr - SOLR 邻近搜索提升不同斜率
- nginx - 使用命令“nginx”、“service start nginx”和“systemctl nginx start”启动 nginx 有什么区别?
- java - 在检索自定义 SOAP 标头时,使用 SOAPMessage.getSOAPHeader() 将 Soap 标头获取为 null
- xml - QString密码加密
- python-3.x - 这个语法错误是什么意思。我的代码写得很好。问题是什么?