精華 騰訊宣布開源 其高性能日志系統 BqLog
騰訊宣布開源 BqLog,一個源于《Honor Of Kings》(王者榮耀國際服)的,輕量級、跨平臺、高性能的日志組件。由 C++ 實現,同時支持 Java,C# 的調用。可以用于 Unreal、Unity 等游戲引擎,也能用于 Android、IOS 環境下的 App。在 Windows、Mac、Linux 等的桌面和服務器環境也能夠很好運行。
主要特點
高并發,高性能
現在業界有很多開源日志組件,不管是 Java,C++ 還是其他語言實現,通過實測,性能最高的還是 Log4j2,當其運行于異步模式下的時候,對比其他日志組件有巨大的性能優勢。而 BqLog 同樣運行在異步模式下的時候,比 Log4j 有 5 倍以上的性能提升(見 Github 內的 README 和 benchmark)。同時在 Java 和 C# 環境下使用的時候,可以做到無 GC。
低內存
由于 BqLog 源自手機游戲,所以必須適應嚴苛的內存使用限制。整個組件本身的內存消耗只在 1M 左右。
高壓縮比
BqLog 推出了一種自有知識產權的日志壓縮格式,在日常環境中,最后生成的日志不僅尺寸只有文本格式的 20% 到 30% 左右,其寫入性能還超出普通格式很多。(見 Github 內的 README 和 benchmark)
防數據丟失
異步日志最大的問題是當程序發生異常結束的時候,內存里的數據還沒來得及寫入日志文件,BqLog 提供了多種解決方案用于避免數據丟失。
高泛用性
BqLog 提供動態庫,靜態庫,源代碼等多種導入方式,本身代碼除了 stdlibc 之外,沒有任何依賴。所以可以在 Android NDK 的 ANDROID_STL=none 的嚴格模式下通過編譯。
可擴展
BqLog 提供自定義 adapter 支持,可以用于適配各種不同的數據類型,本身已經默認提供了針對 Unreal 引擎常用數據類型的支持。