出于项目需求,需要读取某个进程的最新日志,而这个进程刚好是supervisor管控。
很自然地我就想到了,根据日志的编辑时间排序,获取最新的日志文件。
然而,发现了奇怪的一幕:
发现什么没有?
webcgj-0.std这个最初的日志编辑时间居然比webcgj-0.std.1的编辑时间完。不应该是webcgj-0.std写满了,再去写webcgj-0.std.1, 然后webcgj-0.std.2等等吗?
当然不是!
×××××××××××××××××××××××××××××××××××××××××××× 来自官方文档的解释 ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
http://supervisord.org/logging.html#activity-log-rotation
以这个配置为例:
# supervisor配置文件 logfile =xxx.log logfile_maxbytes = 50MB logfile_backups=2
当进程启动时,创建xxx.log日志:
1、当xxx.log超过50M(logfile_maxbytes = 50MB)后, xxx.log更名为xxx.log.1(logfile_backups=2), 创建新文件xxx.log;
2、当xxx.log超过50M(logfile_maxbytes = 50MB)后,xxx.log.1更名为xxx.log.2(logfile_backups=2), xxx.log更名为xxx.log.1(logfile_backups=2), 创建新文件xxx.log;
3、当xxx.log超过50M(logfile_maxbytes = 50MB)后,xxx.log.2被删除(logfile_backups=2,且他是最老的日志), xxx.log.1更名为xxx.log.2(logfile_backups=2), xxx.log更名为xxx.log.1(logfile_backups=2), 创建新文件xxx.log;
4、无限循环3
我说清楚没?
得出两个结论:
(1)配置文件中日志名对应的日志是对应进程最新的日志数据;
(2)多看官方文档(我看过一个翻译的帖子,阐述错误)。