当前位置: 首页 > 知识库问答 >
问题:

读取外部xml log4j2配置文件,如果不存在,则在Spring boot中读取内部

芮宇航
2023-03-14

我有一个使用log4j2的Spring启动应用程序,它的XML配置文件在资源文件夹中。

但这个想法是,首先应用程序在战争之外查找配置文件,如果它不存在,则从资源文件夹中获取配置文件。

这种行为有可能实现吗?

更新:我在我的查询中添加了更多细节!!我的具体案例如下:我有以下环境:spring boot(2.2.4)Java 1.8 log4j2关于Linux(CentOS)

application.properties文件(位于资源文件夹中),其logging.config属性指向外部log4j2.xml文件(WAR之外)。

大概是这样的:

logging.config = $ {DIR_PROP} /APP_NAME/config/appName_log4j2.xml

在内部,在resources文件夹中,我也有相同的文件,因为在我的测试中,如果没有它,Spring不会启动。有趣的是,在进入内部*log4j2.xml之后,由于日志记录,它进入了外部。配置属性。

目标恰恰相反,首先尝试外部文件,如果它不是转到内部(资源文件夹)。

共有1个答案

鄂曦之
2023-03-14

如果您指定log4j.configurationFile并且找不到该文件,它将生成错误,Log4j将使用其默认配置。

Log4j会自动在类路径中搜索文件,所以如果你在类路径中添加一个外部目录,Log4j会在查找log4j2.xml时搜索它。

您是否考虑过使用Spring云配置?您可以配置SpringCloud配置,以便它在不同目录中查找配置文件,从而允许您拥有特定于应用程序的文件和默认文件。Log4j还支持使用Spring Cloud配置的复合配置,您可以使用通用配置以及覆盖通用配置的特定于应用程序的配置。如果您对此感兴趣,请查看SpringCloudConfigClient。

 类似资料:
  • 我的代码目录中有一个名为.env的文件.env有不同的配置 在我的代码目录中,我有一个名为脚本的文件夹 在脚本中,我有一个名为“control.py”的脚本,需要从.env读取配置 我如何才能做到这一点? 结构如下 。env有所有的配置文件,control.py需要读取这些配置文件。

  • 外部读取配置命令 可以写到一个文件中,用 Mininet 直接调用。例如脚本文件名为 my_cli_script,则可以执行 mininet> source my_cli_script 或者 # mn --pre my_cli_script

  • 每个人都知道如果我们想要读取属性文件,我们可以这样做: 但是,现在我有了一个类似于SpringBoot的框架。它可以将Spring与Mybatis集成在一起。 问题是前面的代码只能读取我的项目类路径文件,但我需要使用我的框架读取project属性文件。我是怎么做的?

  • 我正在尝试运行应用程序jar并将应用程序配置(application.yml)外部化。有几个文件是从application.yml.引用的 应用程序运行命令: 目录结构: 以Kafka图书馆试图访问文件为例。 我尝试通过以下方式配置路径 application.yml 当库试图访问这些文件时,我得到以下错误。 原因:java.io.FileNotFoundException:类路径资源[keyst

  • 问题内容: 有谁知道如何在Maven中读取文件。我知道有多种方法可以使用资源过滤来读取属性文件并从中设置值,但是我想要在中使用以下方法: 问题答案: 试用 Properties Maven插件

  • 问题内容: 我已经在本地系统中保存了一个JSON文件并创建了一个JavaScript文件,以便读取JSON文件并打印出数据。这是JSON文件: 假设这是JSON文件的路径:。 有人能帮我写一个简单的代码来读取JSON文件并以JavaScript打印数据吗? 问题答案: 由于使用HTTP发出请求,因此您 无法 对本地资源进行AJAX调用。 一种解决方法是运行本地Web服务器,提供文件并对localh