重启模块后保留日志

Keep logs after reboot module

我有一个调用 java 模块的 bash 脚本。 每次调用时,都会删除上一次调用的日志。

如何配置 log4j 以保存旧日志?

这是我的 log4j 设置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" threshold="all" debug="false" >

        <appender name="SYSLOGBATCH" class="org.apache.log4j.net.SyslogAppender">
                <param name="Facility" value="LOCAL5" />
                <param name="Name" value="syslog" />
                <param name="Threshold" value="DEBUG" />
                <param name="FacilityPrinting" value="true"/>
                <param name="SyslogHost" value="127.0.0.1" />
                <layout class="org.apache.log4j.PatternLayout">
                        <param name="ConversionPattern" value="[aabatch-jvm] %d %-5p [%.16t] [%C :: %M] %m%n" />
                </layout>
        </appender>

        <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
                <param name="Target" value="System.out" />
                <layout class="org.apache.log4j.PatternLayout">
                        <param name="ConversionPattern" value="[aa-jvm] %d %-5p [%.16t] [%C :: %M] %m%n" />
                </layout>
        </appender>

        ...

        <root>
                <level value="INFO" />
                <appender-ref ref="SYSLOGBATCH" />
        </root>

</log4j:configuration>

正如 Haim 在他的评论中所建议的,您可以保留所有需要添加文件附加程序的日志。

例如

<appender name="file" class="org.apache.log4j.RollingFileAppender">
    <param name="append" value="false" />
    <param name="maxFileSize" value="10MB" />
    <param name="maxBackupIndex" value="5" />

    <!-- for Tomcat -->
    <param name="file" value="${catalina.home}/logs/yourApp.log" />

    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="[aa-jvm] %d %-5p [%.16t] [%C :: %M] %m%n" />
   </layout>
</appender>