python日志多线程切割问题
问题分析
今天查看项目日志发现主日志文件中只有很少的日志,经过排查发现日志输出到切割以前的文件中去了。
项目使用了RotatingFileHandler
,按文件大小切割日志文件,并且启动使用的gunicorn
启动了五个workers
,第一次启动正常,当日志达到切割时,多个线程同时去切割后得到的写入文件是切割后的文件,导致了多线程下写入不同文件中。
解决问题
可以自己根据
RotatingFileHandler
写一个,加锁实现多线程只启动一个切割ConcurrentLogHandler 更换这个库即可