多进程环境python logging打印日志混乱问题

解决办法如下:

logging.basicConfig(level=logging.INFO,
                        format='[%(asctime)s] p%(process)s {%(name)-12s:%(lineno)d} %(levelname)-8s - %(message)s',
                        datefmt='%m-%d %H:%M',
                        filename='taobao.log',
                        filemode='a') #注意此处用"a"而不是"w"

多么痛的领悟,困扰了这么久的问题其实就是一个参数配置错了。
fileMode:表示日志文件的打开方式。w-直接写,使用这个配置当系统重启的时候日志会清空,一个进程打开后其他进程是无法使用的;a-尾部追加,大家都可以打开往文件结尾进行追加写入。

本人主语言是java,转到python后日志这块踩了几个坑。再说说另外一个坑,就是异常堆栈的打印问题,在java中logger是可以使用error直接打印出来的。在python中error跟其他日志记录方法没太大差别,是无法打印异常堆栈的,打印堆栈请使用logger.exception("异常说明", e)

推荐阅读更多精彩内容