How tencent/bqlog works
BqLog is a cross-language asynchronous logging system. Applications configure a named log through a language wrapper, submit formatted/category-tagged entries, and the core processes them through workers and appenders to console or files. Compressed log decoding is a separate user workflow; category-log generation and game-engine integrations are additional product branches. The README documents broader platform and encryption support; source excerpts only confirm selected internals, so uncertain implementation links are omitted.
Main entry points: bq_log_api.cpp Native API · log_imp.cpp Log Instance · log_manager.cpp Log Manager · appender_base.cpp Appender System
Components 26
Language Interfaces
- C++ API
include/bq_log/bq_log.h - Java Wrapper
wrapper/java/src/bq/log.java - C# Wrapper
wrapper/csharp/src/bq/log.cs - TypeScript Wrapper
wrapper/typescript/src/bq/log.ts - Python Wrapper
wrapper/python/src/bq/log.py - Go Wrapper
wrapper/go/src/bq/log.go
Logging Engine
- Native API
src/bq_log/api/bq_log_api.cpp - Log Manager
src/bq_log/log/log_manager.cpp - Log Instance
src/bq_log/log/log_imp.cpp - Log Worker
src/bq_log/log/log_worker.cpp - Log Layout
src/bq_log/log/layout.cpp - Log Buffers
src/bq_log/types/buffer/log_buffer.cpp
Output and Decode
- Appender System
src/bq_log/log/appender/appender_base.cpp - Console Appender
src/bq_log/log/appender/appender_console.cpp - File Appenders
src/bq_log/log/appender/appender_file_base.cpp - Decoder API
include/bq_log/bq_log.h - Decoder Manager
src/bq_log/log/decoder/appender_decoder_manager.cpp - Decoder CLI
tools/log_decoder/main.cpp
Product Extensions
- Category Generator
tools/category_log_generator/category_generator.cpp - Unity Integration
plugin/unity/Editor/src/bq_log_editor_bootstrap.cs - Unreal Integration
plugin/unreal/BqLog/Source/BqLog/Private/BqLog.cpp
Platform Foundation
- File Manager
src/bq_common/utils/file_manager.cpp - Encryption Primitives
src/bq_common/encryption/aes.cpp
Other components
- Application
- Console
- File System
Connections 32
- Application → C++ API: logs through
- Application → Java Wrapper: logs through
- Application → C# Wrapper: logs through
- Application → TypeScript Wrapper: logs through
- Application → Python Wrapper: logs through
- Application → Go Wrapper: logs through
- C++ API → Native API: invokes
- Java Wrapper → Native API: bridges to
- C# Wrapper → Native API: bridges to
- TypeScript Wrapper → Native API: bridges to
- Python Wrapper → Native API: bridges to
- Go Wrapper → Native API: bridges to
- Native API → Log Manager: dispatches
- Log Manager → Log Instance: creates
- Log Manager → Log Worker: processes with
- Log Worker → Log Instance: processes
- Log Instance → Log Buffers: buffers entries
- Log Instance → Log Layout: formats entries
- Log Instance → Appender System: dispatches entries
- Appender System → Console Appender: writes to
- Appender System → File Appenders: writes to
- Console Appender → Console: outputs
- File Appenders → File Manager: writes via
- File Manager → File System: operates on
- Application → Decoder API: requests decode
- Decoder API → Decoder Manager: dispatches
- Decoder CLI → Decoder Manager: uses
- Decoder Manager → File Manager: reads via
- Application → Category Generator: generates category code
- Application → Unity Integration: integrates with
- Application → Unreal Integration: integrates with
- File Appenders → Encryption Primitives: optional encryption