高效的多线程日志2019-11-02

日志:

诊断日志:即log4j、logback等常用的日志库提供的日志功能。

交易日志:即数据库的write-ahead log、文件系统的jour-naling等,用于记录状态变更,通过回放日志可以逐步恢复每一层修改之后的状态。

日志通常要记录:

1、收到的每条内部消息的id。

2、收到的每条外部消息的全文。

3、发出的每条消息的全文,每条消息都有全局唯一的id。

4、关键内部状态的变更等。

一个日志库分为前端和后端。

前端:供应用程序使用的接口,并生成日志消息。

后端:负责把日志消息写到目的地。

调整日志的输出级别不需要重新编译,也不需要重启进程,只要调用muduo::Logger::setLogLevel()就能即时生效。

一个典型的日志文件名:

logfile_test.2012060-144022.hostname.3605.log

文件名组成:1、logfile_test是进程的名字。通常是main函数参数中argv[0]的basename(3)。

2、文件创建时间(GMT时区)。例如*.20120603-14*表示2012年6月3日下午2点左右的日志文件。

3、机器名称。

4、进程id。

5、统一的后缀名.log。

muduo日志库默认消息格式:

日期            时间          微秒        线程        级别    正文    源文件名:行号

20120603    09:22:32.123994Z    23261    INFO    Hello - test.cc:51

20120603    09:22:32.126934Z    23261    WARN    Hello - test.cc:52

20120603    09:22:32.126955Z    23261    ERROR    Hello - test.cc:53


日志格式要点:

1、尽量每条日志一行。容易查询:grep -o '^20120603 09:22:..' | sort | uniq -c

2、时间戳精确到微秒。

3、始终使用GMT时区。

4、打印线程id。

5、打印日志级别。

6、打印源文件名和行号。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容