国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

分享代碼片段:既能設置buffer大小,也能定時刷新(無論是否達到設定的buffer大小)的log4

xuxueli / 2593人閱讀

摘要:既能設置大小,也能定時刷新無論是否達到設定的大小的適用于既想使用的提高性能,又想定時強制輸出以不影響某些依賴日志輸出的后續流程的場景默認的默認的定時刷新間隔秒下一次刷新的時間點默認的默認的至少秒本必須是否則沒意義配置使用樣例

package test;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.Layout;

/**
 * 既能設置buffer大小,也能定時刷新(無論是否達到設定的buffer大小)的appender;適用于既想使用buffer的IO提高性能,又想定時強制輸出以不影響某些依賴日志輸出的后續流程的場景
 * 
 * @author pf-miles
 * @since 2015-4-7
 */
public class TimedBufferedDailyRollingFileAppender extends DailyRollingFileAppender {

    private static final int                                         CHECK_INTERVAL      = 5;
    private static final Object                                      appendersLock       = new Object();
    private static final List appenders           = new ArrayList();
    static {
        new Thread(new Runnable() {

            public void run() {
                while (true) {
                    try {
                        synchronized (appendersLock) {
                            for (TimedBufferedDailyRollingFileAppender appender : appenders)
                                appender.flush();
                        }
                        Thread.sleep(CHECK_INTERVAL * 1000);
                    } catch (Throwable t) {
                        // ignore...
                    }
                }
            }
        }, "TimedBufferedDailyRollingFileAppender-timed-flush").start();
    }
    private static final int                                         DEFAULT_BUFFER_SIZE = 1024 * 1024;                                           // 默認1MB的buffer

    protected int                                                    flushInterval       = 60;                                                    // 默認的定時刷新間隔(秒)

    private Date                                                     flushTime           = new Date();                                            // 下一次刷新的時間點

    public TimedBufferedDailyRollingFileAppender(){
        super();
        this.setBufferedIO(true);
        this.setBufferSize(DEFAULT_BUFFER_SIZE);// 默認1MB的buffer
        this.setImmediateFlush(false);
        synchronized (appendersLock) {
            appenders.add(this);
        }
    }

    public TimedBufferedDailyRollingFileAppender(Layout layout, String filename, String datePattern) throws IOException{
        super(layout, filename, datePattern);
        this.setBufferedIO(true);
        this.setBufferSize(DEFAULT_BUFFER_SIZE);// 默認1MB的buffer
        this.setImmediateFlush(false);
        synchronized (appendersLock) {
            appenders.add(this);
        }
    }

    private void flush() {
        if (!(new Date()).after(flushTime)) return;
        if (!checkEntryConditions()) return;
        qw.flush();
        this.flushTime = new Date(System.currentTimeMillis() + this.flushInterval * 1000);
    }

    public void setFlushInterval(int flushInterval) {
        if (flushInterval < CHECK_INTERVAL) flushInterval = CHECK_INTERVAL;// 至少CHECK_INTERVAL秒
        this.flushInterval = flushInterval;
    }

    // 本appender必須是bufferedIO, 否則沒意義
    @Override
    public boolean getBufferedIO() {
        return true;
    }

    @Override
    public void setBufferedIO(boolean bufferedIO) {
        super.setBufferedIO(true);
    }

    @Override
    public void setImmediateFlush(boolean value) {
        super.setImmediateFlush(false);
    }

    @Override
    public boolean getImmediateFlush() {
        return false;
    }
}

配置使用樣例:


        
        
        
        
        
        
            
        

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/64331.html

相關文章

  • Java 日志系列篇一 原生 Java.util.logging

    摘要:理解在記錄消息中的日志的不同級別是非常重要的。通常來說,當為指定了一個該會包含當前指定級別以及更高級別的日志。,將消息發送至單個一般文件或一個可回滾的文件集合。 本文網大多網絡整理所得,出處太多,不一一列舉 簡介 Java 中的 Logging API 讓 Java 應用可以記錄不同級別的信息,它在debug過程中非常有用,如果系統因為各種各樣的原因而崩潰,崩潰原因可以在日志中清晰地追...

    tainzhi 評論0 收藏0
  • nginx配置詳解

    摘要:配置文件中文詳解定義運行的用戶和用戶組進程數,建議設置為等于總核心數。但也有超過的情況,但是該值必須設置為系統分頁大小的整倍數。開啟限制連接數的時候需要使用負載均衡配置的負載均衡,是權重,可以根據機器配置定義權重。 Nginx配置文件nginx.conf中文詳解 #定義Nginx運行的用戶和用戶組 user www www; #nginx進程數,建議設置為等于CPU總核心數。 wor...

    wums 評論0 收藏0
  • Nginx配置文件學習筆記

    摘要:配置文件學習筆記定義運行的用戶和用戶組進程數,建議設置為等于總核心數全局錯誤日志定義類型,進程文件指定進程可以打開的最大描述符數目工作模式與連接數上限這個指令是指當一個進程打開的最多文件描述符數目,理論值應該是最多打開文件數與進程數相除, Nginx配置文件學習筆記 定義Nginx運行的用戶和用戶組 user nginx; Nginx進程數,建議設置為等于CPU總核心數 worker...

    muddyway 評論0 收藏0
  • Nginx配置文件學習筆記

    摘要:配置文件學習筆記定義運行的用戶和用戶組進程數,建議設置為等于總核心數全局錯誤日志定義類型,進程文件指定進程可以打開的最大描述符數目工作模式與連接數上限這個指令是指當一個進程打開的最多文件描述符數目,理論值應該是最多打開文件數與進程數相除, Nginx配置文件學習筆記 定義Nginx運行的用戶和用戶組 user nginx; Nginx進程數,建議設置為等于CPU總核心數 worker...

    MoAir 評論0 收藏0

發表評論

0條評論

xuxueli

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<