0

我正在使用log4j将所有日志写入文件。我有 2 个不同的 Java 项目说proj1proj2哪里project1需要项目proj2。我已添加proj1proj2.

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

请问有什么输入吗?

4

2 回答 2

1

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

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

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

有关的:

于 2013-08-29T11:38:40.140 回答
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>

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

如果您仍然遇到问题,请告诉我。

于 2013-08-29T13:42:40.227 回答