2013-08-29 38 views
0

我正在使用log4j将所有日志写入文件。 我有2个不同的Java项目说proj1proj2,其中project1是需要项目为proj2。我添加了proj1作为proj2的依赖项。如何在一个日志文件中写入2个或多个java项目

proj1有log4j设置完成,并工作正常。
现在我的问题是当我运行proj2中的方法时,它也会调用proj1
所以我想为这两个项目都有一个日志文件。

请输入任何内容?

回答

1

有几种方法可以写入单个日志文件,但哪种方式最好取决于您省略的一些细节。

如果proj2包含proj1作为库,则可以使其使用proj1的log4j配置文件。这是有效的,因为你只有一个虚拟机。这里最简单的解决方案是将第一个项目的配置复制到另一个项目中,或者不给第二个项目任何日志配置;它会从它的依赖关系中读取配置。

如果proj2作为外部进程启动proj1,则需要将两个项目都配置为使用SocketAppender,因为只有一个Java VM可以写入单个日志文件。

相关:

+0

谢谢Aaron。我已经使它工作。这就是我所做的。我只是将proj1的log4j.properties文件复制到proj2中,然后我在proj1和proj2之间执行了任何执行的单个日志。 – Pratik

+0

您可以使用root logger配置进行外部appender.there将不需要raming或复制log4j.xml。 – bajrangi

0

我也面临同样的问题,但我得到了解决和 已配置我的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> 

备注:* 整个应用程序的根记录器日志。 *

让我知道你是否仍然面临这个问题。

相关问题