【发布时间】:2016-04-15 22:41:27
【问题描述】:
我尝试使用多处理进行日志记录,发现在 windows 下,我会在子进程中获得不同的 root logger,但在 Linux 下是可以的。
测试代码:
main.py:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import logging
import multiprocessing
from mymod import func
def m_func():
server = multiprocessing.Process(target=func, args=())
server.start()
logger = logging.getLogger()
#print 'in global main: ', logger
if __name__ == '__main__':
print 'in main: ', logger
m_func()
mymod.py:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import logging
logger = logging.getLogger()
# print 'in global func: ', logger
def func():
print 'in func: ', logger
在Linux下,结果是:
in main: <logging.RootLogger object at 0x10e4d6d90>
in func: <logging.RootLogger object at 0x10e4d6d90>
但在 Windows 7、64 位下,我会在 main 和 func 之间得到不同的 root logger:
in main: <logging.RootLogger object at 0x00000000021FFD68>
in func: <logging.RootLogger object at 0x00000000023BC898>
如果我在主脚本中初始化root logger,如何在windows下保持子进程的级别等设置?
【问题讨论】:
标签: python windows logging multiprocessing