【问题标题】:Use logger in python module/package?在 python 模块/包中使用记录器?
【发布时间】:2020-09-28 17:23:14
【问题描述】:

我有一个 python 模块,我想设置一个记录器以通过包可用。

  1. 我在__init__.py 中启动记录器
  2. python -m运行代码
  3. 在另一个文件中调用一个函数,该文件需要来自__init__.py 的记录器

那我就报这个错误

name 'logger' is not defined

__init__.py:

import logging
logging.basicConfig(format='%(msg)s')
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)

from .code import log
log()

code.py:

def log():
    logger.debug('test')

【问题讨论】:

  • 您如何(如果有的话)尝试将记录器从__init__.py 获取到您使用它的位置?提供minimal reproducible example 而不是描述。
  • @jonrsharpe 谢谢我添加了示例。当我导入日志并且我在一个应该有全局变量的模块中时,我希望日志函数能够看到记录器。
  • “我在一个应该有全局变量的模块中” - 我不知道你为什么这么认为,这不是什么定义它在__init__.py 中。
  • 哦,那么我应该如何使变量或函数可以通过模块访问?或者我必须在模块的每个文件中启动记录器?

标签: python logging module package


【解决方案1】:

特别感谢@jonrsharpe 将我链接到Python: How to import from an __init__.py file?

通过模块拥有一个记录器对象并且不在每个文件中启动它的解决方案是:

from . import logger

【讨论】:

    猜你喜欢
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 2010-09-07
    • 2020-08-11
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多