gpt4 book ai didi

python - 如何在 Python 中的模块之间共享记录器实例?

转载 作者:太空宇宙 更新时间:2023-11-03 13:19:38 25 4
gpt4 key购买 nike

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 对象?

最佳答案

您可以将其留给logging 模块。

只需导入logginglogging.getLogger() 具有相同的键将总是返回相同的对象;添加到 lib_xml 的以下代码会将消息记录到同一个记录器:

import logging

logger = logging.getLogger('conf_store')

日志记录配置在设计上是全局的。

只使用当前模块名称作为日志记录键是有好处的;它可以让您梳理出记录了哪些位置消息:

logger = logging.getLogger(__name__)

关于python - 如何在 Python 中的模块之间共享记录器实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18631875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com