Python-Protokollierung mit Multiprocessing, Root-Protokollierung in Windows ande

Ich habe versucht, mit Multiprocessing zu protokollieren. Unter Windows wird ein anderer Root-Logger im Child-Prozess angezeigt. Unter Linux ist dies jedoch in Ordnung.

Der Testcode:

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

nter Linux lautet das Ergebnis:

in main:  <logging.RootLogger object at 0x10e4d6d90>
in func:  <logging.RootLogger object at 0x10e4d6d90>

Aber unter Windows 7, 64 Bit, bekomme ich unterschiedliche Root-Logger zwischen main und func:

in main:  <logging.RootLogger object at 0x00000000021FFD68>
in func:  <logging.RootLogger object at 0x00000000023BC898>

Und wenn ich den Root-Logger in Hauptskripten initialisiere, wie kann ich dann die Einstellungen wie Level im Child-Prozess unter Windows beibehalten?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage