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的文件即可。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM