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

log4j配置文件和jar应用程序

齐甫
2023-03-14

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

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

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

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

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

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

共有3个答案

郑宏朗
2023-03-14

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

>

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

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

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

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

    干杯

  • 濮阳钟展
    2023-03-14

    创建任意文件夹,并将您的属性或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应用程序,请使用链接

    彭衡
    2023-03-14

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

    PropertyConfigurator.configure("/myPath/log4j.properties");
    
     类似资料:
    • 我尝试了一个显示其他响应的测试用例,我将一步一步地解释它: > 我在我的设备上安装了MDM配置文件,这提示我安装了一个应用程序,并且我成功地安装了它。应用程序已进入“应用程序中的配置文件”部分。 然后我手动删除了应用程序。

    • 问题内容: 好的,所以我不想在这里展开一场圣战,但是我们正在努力巩固处理应用程序配置文件的方式,我们正在努力决定采用哪种最佳方法。目前,我们分发的每个应用程序都在使用其自己的临时配置文件,无论是属性文件(ini样式),XML还是JSON(目前仅在内部使用!)。 目前,我们的大多数代码是Java,因此我们一直在研究Apache Commons Config ,但是我们发现它非常冗长。我们还研究了XM

    • 我在liberty中部署了多个WebApp,它们都有自己的log4j配置文件,每个WAR中的log4j配置文件位于WAR的WEB-INF/classes文件夹中。添加log4j配置的web.xml代码片段如下: 这似乎适用于所有其他Tomcat和Jboss应用服务器,但不适用于WebSphere Liberty Profile。即使在WebSphere Basic profile中,似乎也是如此。

    • 我使用log4j(1.2.15)来登录我的应用程序,其中我有两个用于两个不同包(darius.log4j.sql和darius.log4j.net)的文件追加器和一个控制台追加器。其配置如下: 我现在需要的是以编程方式添加一个新的文件appender,如果出现特定的数据组合。我知道如何定义这个新的文件appender(前C),但我不知道如何设置级别和新的appender到第三个包: 其中C是第三个

    • 问题内容: 我已将应用程序迁移到log4j 2,并通过log4j2.xml对其进行了配置 但是,我正在使用的某些库取决于log4j1。如果我使用以下命令运行该应用程序: log4j 1抱怨找不到配置文件。我正在使用log4j 2,log4j-1.2-api-2.0-rc1.jar提供的log4j 1.x桥。是否可以使用单个log4j2.xml进行配置? 我尝试过的替代方法是同时配置log4j和lo

    • 我已经将应用程序迁移到Log4J2,并通过log4j2.xml对其进行了配置 但是,我使用的一些库依赖于log4j1。如果我使用以下方式运行应用程序: 我尝试的另一种方法是将log4j和log4j2配置在一起: 我担心的是日志配置文件和输出的碎片化。我还担心log4j.xml和log4j2.xml之间可能存在的冲突。例如,logfile Error.log被配置为使用log4j1中的FileApp