首先來(lái)聊聊往事吧~~兩年前就職于一家傳統(tǒng)金融軟件公司,為某交易所開(kāi)發(fā)一套大型交易系統(tǒng),交易標(biāo)的的價(jià)格為流式數(shù)據(jù),采用價(jià)格觸發(fā)成交方式,T+0交易制度(類似炒股,只是炒的不是股票而是其他標(biāo)的物,但可以隨時(shí)開(kāi)平倉(cāng))。鑒于系統(tǒng)需要記錄大量?jī)r(jià)格數(shù)據(jù)、交易信息及訂單流水,且系統(tǒng)對(duì)性能要求極高(敏感度達(dá)毫秒級(jí)),因此需要避免日志服務(wù)成為系統(tǒng)性能瓶頸。通過(guò)對(duì)幾個(gè)通用型日志(如log4j、logback)的性能壓測(cè),以及考慮到它們作為通用型日志相對(duì)比較臃腫,就決定自個(gè)兒寫個(gè)日志工具以支撐系統(tǒng)功能和性能所需。當(dāng)時(shí)的做法只是簡(jiǎn)單的將日志的實(shí)現(xiàn)作為一個(gè) util 類寫在項(xiàng)目中,只有幾百行的代碼量。
系統(tǒng)上線兩個(gè)月后日均成交額200億RMB,最高達(dá)440億RMB,峰值成交4000筆/秒。系統(tǒng)非常龐大,但幾百行的代碼卻完美支撐住了重要的日志服務(wù)!
鑒于其優(yōu)秀的表現(xiàn),就花了一點(diǎn)點(diǎn)時(shí)間把它抽取出來(lái)作為一個(gè)獨(dú)立的日志組件,取名叫 FLogger,代碼幾乎沒(méi)有改動(dòng),現(xiàn)已托管到GitHub(FLogger),有興趣的童鞋可以clone下來(lái)了解并改進(jìn),目前它的實(shí)現(xiàn)是非常簡(jiǎn)(純)單(粹)的。
以上就是 FLogger 的誕生背景。好吧,下面進(jìn)入正題。
特性
雖然 FLogger 只有幾百行的代碼,但是麻雀雖小五臟俱全,它可是擁有非常豐富的特性呢:
雙緩沖隊(duì)列
多種刷盤機(jī)制,支持時(shí)間觸發(fā)、緩存大小觸發(fā)、服務(wù)關(guān)閉強(qiáng)制觸發(fā)等刷盤方式
多種 RollingFile 機(jī)制,支持文件大小觸發(fā)、按天觸發(fā)等 Rolling 方式
多日志級(jí)別,支持 debug、info、warn、error和 fatal 等日志級(jí)別
熱加載,由日志事件觸發(fā)熱加載
超輕量,不依賴任何第三方庫(kù)
性能保證,成功用于日交易