zoukankan      html  css  js  c++  java
  • logback日志丢失的情况之一

    在游戏服务器上线之后,会记录很多统计日志,这些日志是第三方需要的数据,通过linux 的 rsync方式同步给第三方。日志规则 每十分钟会创建一个日志文件。然后后台有一个rsync进程,每隔十分钟向第三方服务器同步一次日志文件。测试的时候没有问题,但是上线之后,发现在整点的时候,比如3:30,3:50的时候,日志文件只有前几秒的数据。经过分析,在这个时候发生了rsync同步的操作,同步操作之后,日志就再也写不进去了。

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

    <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是自定义 的一个策略类,详细见:https://www.cnblogs.com/wgslucky/p/10071791.html    

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


  • 相关阅读:
    PAT-乙级-1034. 有理数四则运算(20)
    PAT-乙级-1033. 旧键盘打字(20)
    PAT-乙级-1032. 挖掘机技术哪家强(20)
    PAT-乙级-1031. 查验身份证(15)
    PAT-乙级-1030. *完美数列(25)
    PAT-乙级-1029. 旧键盘(20)
    PAT-乙级-1028. 人口普查(20)
    PAT-乙级-1027. 打印沙漏(20)
    PAT-乙级-1026. 程序运行时间(15)
    PAT-乙级-1025. 反转链表 (25)
  • 原文地址:https://www.cnblogs.com/wgslucky/p/10117786.html
Copyright © 2011-2022 走看看