我正在使用log4j
将所有日志写入文件。 我有2个不同的Java项目说proj1
和proj2
,其中project1
是需要项目为proj2
。我添加了proj1
作为proj2
的依赖项。如何在一个日志文件中写入2个或多个java项目
proj1有log4j
设置完成,并工作正常。
现在我的问题是当我运行proj2
中的方法时,它也会调用proj1
。
所以我想为这两个项目都有一个日志文件。
请输入任何内容?
我正在使用log4j
将所有日志写入文件。 我有2个不同的Java项目说proj1
和proj2
,其中project1
是需要项目为proj2
。我添加了proj1
作为proj2
的依赖项。如何在一个日志文件中写入2个或多个java项目
proj1有log4j
设置完成,并工作正常。
现在我的问题是当我运行proj2
中的方法时,它也会调用proj1
。
所以我想为这两个项目都有一个日志文件。
请输入任何内容?
有几种方法可以写入单个日志文件,但哪种方式最好取决于您省略的一些细节。
如果proj2
包含proj1
作为库,则可以使其使用proj1
的log4j配置文件。这是有效的,因为你只有一个虚拟机。这里最简单的解决方案是将第一个项目的配置复制到另一个项目中,或者不给第二个项目任何日志配置;它会从它的依赖关系中读取配置。
如果proj2
作为外部进程启动proj1
,则需要将两个项目都配置为使用SocketAppender,因为只有一个Java VM可以写入单个日志文件。
相关:
我也面临同样的问题,但我得到了解决和 已配置我的log4j.xml这样的:
使用附加器:
<appender name="FILE1" class="org.apache.log4j.RollingFileAppender">
<errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler" />
<param name="File" value="E:/OESController.log" />
<param name="Append" value="true" />
<param name="MaxFileSize" value="20KB" />
<param name="MaxBackupIndex" value="2" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: %d{dd MMM yyyy HH:mm:ss.SSS} %-5l - %m%n%n" />
</layout>
</appender>
<!-- Root Logger -->
<root>
<priority value="error" />
<appender-ref ref="FILE" />
</root>
备注:* 整个应用程序的根记录器日志。 *
让我知道你是否仍然面临这个问题。
谢谢Aaron。我已经使它工作。这就是我所做的。我只是将proj1的log4j.properties文件复制到proj2中,然后我在proj1和proj2之间执行了任何执行的单个日志。 – Pratik
您可以使用root logger配置进行外部appender.there将不需要raming或复制log4j.xml。 – bajrangi