日志:
诊断日志:即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、打印源文件名和行号。