【问题标题】:log4j configuration file and jar applicationlog4j 配置文件和 jar 应用程序
【发布时间】:2017-08-03 08:30:32
【问题描述】:

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

private static Logger my_logger = LogManager.getLogger(my_class);

我没有在任何地方指定 conf 文件的名称,所以我认为库隐式获取并读取它。

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

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

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

【问题讨论】:

标签: java logging log4j2


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    或者,还有这个:

    InputStream ist = Thread.currentThread().getContextClassLoader().getResourceAsStream("folder/log4j.properties");
    

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

    【讨论】:

      【解决方案3】:

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

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

      • 运行应用程序时,检查 jar 文件当前目录中名为 log4j2.xml 的文件

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

      • 如果没有,请将 jar 中的模板复制到 jar 文件目录,然后使用它来创建记录器。

      干杯

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-28
        • 2011-08-08
        • 1970-01-01
        • 1970-01-01
        • 2013-06-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多