摘要:既能設(shè)置大小,也能定時(shí)刷新無(wú)論是否達(dá)到設(shè)定的大小的適用于既想使用的提高性能,又想定時(shí)強(qiáng)制輸出以不影響某些依賴(lài)日志輸出的后續(xù)流程的場(chǎng)景默認(rèn)的默認(rèn)的定時(shí)刷新間隔秒下一次刷新的時(shí)間點(diǎn)默認(rèn)的默認(rèn)的至少秒本必須是否則沒(méi)意義配置使用樣例
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; /** * 既能設(shè)置buffer大小,也能定時(shí)刷新(無(wú)論是否達(dá)到設(shè)定的buffer大小)的appender;適用于既想使用buffer的IO提高性能,又想定時(shí)強(qiáng)制輸出以不影響某些依賴(lài)日志輸出的后續(xù)流程的場(chǎng)景 * * @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 Listappenders = 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; // 默認(rèn)1MB的buffer protected int flushInterval = 60; // 默認(rèn)的定時(shí)刷新間隔(秒) private Date flushTime = new Date(); // 下一次刷新的時(shí)間點(diǎn) public TimedBufferedDailyRollingFileAppender(){ super(); this.setBufferedIO(true); this.setBufferSize(DEFAULT_BUFFER_SIZE);// 默認(rèn)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);// 默認(rèn)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, 否則沒(méi)意義 @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; } }
配置使用樣例:
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/64331.html
摘要:理解在記錄消息中的日志的不同級(jí)別是非常重要的。通常來(lái)說(shuō),當(dāng)為指定了一個(gè)該會(huì)包含當(dāng)前指定級(jí)別以及更高級(jí)別的日志。,將消息發(fā)送至單個(gè)一般文件或一個(gè)可回滾的文件集合。 本文網(wǎng)大多網(wǎng)絡(luò)整理所得,出處太多,不一一列舉 簡(jiǎn)介 Java 中的 Logging API 讓 Java 應(yīng)用可以記錄不同級(jí)別的信息,它在debug過(guò)程中非常有用,如果系統(tǒng)因?yàn)楦鞣N各樣的原因而崩潰,崩潰原因可以在日志中清晰地追...
摘要:配置文件中文詳解定義運(yùn)行的用戶(hù)和用戶(hù)組進(jìn)程數(shù),建議設(shè)置為等于總核心數(shù)。但也有超過(guò)的情況,但是該值必須設(shè)置為系統(tǒng)分頁(yè)大小的整倍數(shù)。開(kāi)啟限制連接數(shù)的時(shí)候需要使用負(fù)載均衡配置的負(fù)載均衡,是權(quán)重,可以根據(jù)機(jī)器配置定義權(quán)重。 Nginx配置文件nginx.conf中文詳解 #定義Nginx運(yùn)行的用戶(hù)和用戶(hù)組 user www www; #nginx進(jìn)程數(shù),建議設(shè)置為等于CPU總核心數(shù)。 wor...
摘要:配置文件學(xué)習(xí)筆記定義運(yùn)行的用戶(hù)和用戶(hù)組進(jìn)程數(shù),建議設(shè)置為等于總核心數(shù)全局錯(cuò)誤日志定義類(lèi)型,進(jìn)程文件指定進(jìn)程可以打開(kāi)的最大描述符數(shù)目工作模式與連接數(shù)上限這個(gè)指令是指當(dāng)一個(gè)進(jìn)程打開(kāi)的最多文件描述符數(shù)目,理論值應(yīng)該是最多打開(kāi)文件數(shù)與進(jìn)程數(shù)相除, Nginx配置文件學(xué)習(xí)筆記 定義Nginx運(yùn)行的用戶(hù)和用戶(hù)組 user nginx; Nginx進(jìn)程數(shù),建議設(shè)置為等于CPU總核心數(shù) worker...
摘要:配置文件學(xué)習(xí)筆記定義運(yùn)行的用戶(hù)和用戶(hù)組進(jìn)程數(shù),建議設(shè)置為等于總核心數(shù)全局錯(cuò)誤日志定義類(lèi)型,進(jìn)程文件指定進(jìn)程可以打開(kāi)的最大描述符數(shù)目工作模式與連接數(shù)上限這個(gè)指令是指當(dāng)一個(gè)進(jìn)程打開(kāi)的最多文件描述符數(shù)目,理論值應(yīng)該是最多打開(kāi)文件數(shù)與進(jìn)程數(shù)相除, Nginx配置文件學(xué)習(xí)筆記 定義Nginx運(yùn)行的用戶(hù)和用戶(hù)組 user nginx; Nginx進(jìn)程數(shù),建議設(shè)置為等于CPU總核心數(shù) worker...
閱讀 1281·2023-04-25 23:22
閱讀 1680·2023-04-25 20:04
閱讀 2654·2021-11-22 15:24
閱讀 2816·2021-11-11 16:54
閱讀 1894·2019-08-30 14:03
閱讀 1492·2019-08-29 16:35
閱讀 1711·2019-08-26 10:29
閱讀 2679·2019-08-23 18:01