logback日志丢失的状况之一

在游戏服务器上线以后,会记录不少统计日志,这些日志是第三方须要的数据,经过linux 的 rsync方式同步给第三方。日志规则 每十分钟会建立一个日志文件。而后后台有一个rsync进程,每隔十分钟向第三方服务器同步一第二天志文件。测试的时候没有问题,可是上线以后,发如今整点的时候,好比3:30,3:50的时候,日志文件只有前几秒的数据。通过分析,在这个时候发生了rsync同步的操做,同步操做以后,日志就再也写不进去了。html

解决方法是,把产生日志的时间和同步的时间错开,好比九分钟产生一个日志文件,十分钟同步一次。并且把当前写入的日志文件不要同步,只同步已经再也不写的日志文件。logback的配置以下:linux

<appender name="Stat_log"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.home}/logs/stat/stat.log</file>

        <rollingPolicy
            class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover -->
            <fileNamePattern>${log.home}/logs/stat/stat_%d{yyyyMMddHHmm}.json
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                class="MyTimeBasedFileNamingAndTriggeringPolicy">
                <multiple>10</multiple>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>72000</maxHistory>
        </rollingPolicy>

        <encoder>
            <pattern> %msg%n
            </pattern>
        </encoder>
    </appender>

配置中MyTimeBasedFileNamingAndTriggeringPolicy是自定义 的一个策略类,详细见:http://www.javashuo.com/article/p-nkymolqa-cm.html    json

这样配置,当前写入的日志文件是stat.log,而再也不写入的文件是stat_时间.json的文件。同步的时候只同步.json的文件便可。服务器


相关文章
相关标签/搜索