3

lib_xml.py のモジュール:

import conf_store

def hello():
        print conf_store.logger
        conf_store.logger.debug('why')
        print 'where'

conf_store.py のモジュール:

#! /usr/bin/python 

import os, subprocess, logging, time, shutil, fcntl
import lib_xml

def log():
        """
        a log handle
        """
        import logging.handlers
        global logger
        LOG_PATH = "/opt/conf_store.log"
        logger = logging.getLogger('conf_store')
        logger.setLevel(logging.DEBUG)
        ch = logging.handlers.WatchedFileHandler(LOG_PATH)
        ch.setLevel(logging.DEBUG)
        formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
        ch.setFormatter(formatter)
        logger.addHandler(ch)



if __name__ == "__main__":
        log()

        while(True):
                lib_xml.hello()
                logger.debug('what')

loggerlib_xml.py と conf_store.pyの間でオブジェクトを共有するには?

4

2 に答える 2

8

それはモジュールに任せることができloggingます。

インポートするだけloggingです。logging.getLogger()同じキーを使用すると、常に同じオブジェクトが返されます。に追加された次のコードは、lib_xmlメッセージを同じロガーに記録します。

import logging

logger = logging.getLogger('conf_store')

ロギング構成は、設計上グローバルです。

代わりに現在のモジュール名をロギング キーとして使用することには利点があります。どの場所からメッセージが記録されたかを知ることができます:

logger = logging.getLogger(__name__)
于 2013-09-05T08:56:38.697 に答える