Java log4j配置文件和jar应用程序

Java log4j配置文件和jar应用程序,java,logging,log4j2,Java,Logging,Log4j2,我正在使用log4j2库来管理日志记录过程。 我创建了一个名为log4j2.xml的配置文件,其中包含appender和logger配置。然后,我在每个类中定义了一个记录器 private static Logger my_logger = LogManager.getLogger(my_class); 我没有在任何地方指定conf文件的名称,因此我认为库会隐式地获取并读取它 现在,我需要以jar文件的形式提供我的应用程序,因此我需要使配置文件可用,以便用户可以修改和配置它 在我的例子中,我建

我正在使用log4j2库来管理日志记录过程。 我创建了一个名为log4j2.xml的配置文件,其中包含appender和logger配置。然后,我在每个类中定义了一个记录器

private static Logger my_logger = LogManager.getLogger(my_class);
我没有在任何地方指定conf文件的名称,因此我认为库会隐式地获取并读取它

现在,我需要以jar文件的形式提供我的应用程序,因此我需要使配置文件可用,以便用户可以修改和配置它

在我的例子中,我建议在jar文件级别创建一个XXX文件夹,其中包含我的应用程序使用的所有配置文件


我的问题是如何对应用程序说“get XXX/log4j2.xml”,而不是jar中包含的xml。

几周前我有一个类似的任务。 我是这样解决的:

  • 在jar文件资源文件夹中存储log4j2.xml的模板

  • 运行应用程序时,请在jar files current目录中检查名为log4j2.xml的文件

  • 如果有,使用它来创建记录器

  • 如果没有,请将模板从jar中复制到jar files目录,然后使用该目录创建记录器


干杯

几周前我有一个类似的任务。 我是这样解决的:

  • 在jar文件资源文件夹中存储log4j2.xml的模板

  • 运行应用程序时,请在jar files current目录中检查名为log4j2.xml的文件

  • 如果有,使用它来创建记录器

  • 如果没有,请将模板从jar中复制到jar files目录,然后使用该目录创建记录器


Cheers

配置文件必须位于类路径中,如果您希望应用程序从任何其他位置读取配置,则需要使用

PropertyConfigurator.configure("/myPath/log4j.properties");

该配置文件必须位于类路径中,如果希望应用程序从任何其他位置读取配置,则需要使用

PropertyConfigurator.configure("/myPath/log4j.properties");

创建任意文件夹并将您的属性或xml文件放入其中。要读取属性文件,可以执行以下操作:

Properties objProperties = new Properties();   
 <your-class>.class.getClassLoader().getResource("folder/log4j.properties");
objProperties.load(isFile);

如果是java web应用程序,请使用

创建任何文件夹,并将您的属性或xml文件放入其中。要读取属性文件,可以执行以下操作:

Properties objProperties = new Properties();   
 <your-class>.class.getClassLoader().getResource("folder/log4j.properties");
objProperties.load(isFile);
对于java web应用程序,请使用

解释Log4j2如何查找配置文件以及如何从命令行重写它。解释Log4j2如何查找配置文件以及如何从命令行重写它。