最近公司让实现项目的日志文件如标题所说的需求,于是在网上找了开源包,mlogging.Github上https://github.com/kieslee/mlogging
一. 这里主要是利用它重写TimedRotatingFileHandler的TimedRotatingFileHandler_MP:按照时间自动分割日志文件,实现它的多进程应用
关键代码是这段
fcntl.flock(f.fileno(), fcntl.LOCK_EX)
FileHandler_MP.emit(self, record)
fcntl.flock(f.fileno(), fcntl.LOCK_UN)
f.close()
fcntl.flock(f.fileno(), fcntl.LOCK_EX) 意思是给文件加锁
fcntl.flock(f.fileno(), fcntl.LOCK_UN)意思是给文件解锁.
二. 另外fcntl windows下载不到,她是用于linux下的用于文件锁的模块。如果是在windows上测试,需要将
except IOError, e:
pass
================ 修改为
except :
pass
三. 配置
在 loggerManager loggerManager里面将TimedRotatingFileHandler的地方更换成TimedRotatingFileHandler_MP,在setting.py里面的LOGGING的handlers中的文件日志更换:
'file': {
'level': 'INFO',
'class': 'mlogging.TimedRotatingFileHandler_MP',
'formatter': 'verbose',
'filename': webservice_logfile2,
'when': 'midnight'
},
基本上就可以了
网友评论