腾讯宣布开源 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引擎常用数据类型的支持。