我们正在运行名为Java
的{{1}}文件,对于此应用程序,我们使用Calc.java
文件来记录名为log4j2.xml
的文件。我们的LogCalc.txt
使用名为Calc.java
的 .jar文件,该文件由Addition.Jar
组成,该文件还使用Add.java
文件进行自己的日志记录。一个名为log4j2.xml
的文件。
这里的问题是,当我们运行LogAdd.txt
并从Calc.java
访问方法时,日志记录仅在Addition.Jar
中发生,LogCalc.txt
中的配置考虑到log4j2.xml
的1}},Calc.java
的{{1}}未被考虑在内。因此,我无法从log4j2.xml
获取日志, LogAdd.txt
为空。
我们如何更改配置,以便我们可以Addition.jar
中的LogAdd.txt
以及Calc.java
中的LogCalc.txt
查看两个日志,即{{1}配置必须在我们的应用程序中正常工作,并且它们都使用各自Add.java
文件中的自己的配置记录到不同的文件中。
我们的目标是创建一个主应用程序使用LogAdd.txt
的项目,此项目中包含的 .jar 正在使用XML
,但我们应该从他们两个分别对各自的appender没有任何问题。
我们的Xml文件如下所示。 Addition.jar中使用的log4j2.xml如下:
XML
与Calc.java一起使用的log4j2.xml文件如下:
log4j2.xml
答案 0 :(得分:1)
Log4j将找到它在类路径中找到的第一个log4j2.xml,并将其用于配置。它目前不支持多种配置,但正在进行工作以允许它。即使这样做也不会像你的配置工作那样起作用,因为记录器是相同的。
我建议你在线查看log4j指南。 Log4j不会根据jar文件进行登录,而是通过比较正在使用的记录器的名称与配置的内容。如果您希望一个jar中的所有内容都转到一个文件,那么对于第一个jar使用记录器名称(例如Calc),对于第二个jar使用LogCalc的记录器名称。然后让您的配置将每个记录器的事件路由到相应的文件。