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')
如何在lib_xml.py和conf_store.py之间共享logger
的对象?
答案 0 :(得分:7)
您可以将其留给logging
模块。
只需导入logging
;具有相同密钥的logging.getLogger()
将始终返回相同的对象;添加到lib_xml
的以下代码会将消息记录到同一记录器:
import logging
logger = logging.getLogger('conf_store')
日志记录配置是全局设计的。
使用当前模块名称作为日志记录密钥是有利的;它可以让您梳理出记录的位置消息:
logger = logging.getLogger(__name__)
答案 1 :(得分:0)
删除全局记录器
从log()返回记录器
添加一行:logger = log()之后