我正在使用log4j2库来管理日志记录过程。我创建了一个名为log4j2的配置文件。包含appender和logger配置的xml。然后,我在每个类中定义了一个记录器
private static Logger my_logger = LogManager.getLogger(my_class);
我没有在任何地方指定conf文件的名称,所以我认为库隐式地获取并读取它。
现在,我需要以jar文件的形式提供我的应用程序,所以我需要使配置文件可用,以便用户可以修改和配置它。
在我的例子中,我建议在jar文件级别创建一个XXX文件夹,其中包含我的应用程序使用的所有配置文件。
我的问题是,我如何对应用程序说“get XXX/log4j2.xml”,而不是jar中包含的xml。
几周前我有一个类似的任务。我是这样解决的:
>
在jar文件资源文件夹中存储log4j2.xml的模板
运行应用程序时,检查名为log4j2的文件。jar文件当前目录中的xml
如果有,用它来创建你的记录器
如果没有,请将您的模板从jar中复制到jar文件目录,然后使用该目录创建记录器。
干杯
创建任意文件夹,并将您的属性或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应用程序,请使用链接
该配置文件必须位于类路径中,如果您希望应用程序从任何其他位置读取配置,那么您需要指定使用
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