Python:日志记录模块 - 全局

标签 python logging module global-variables

我想知道如何实现一个可以在任何地方使用您自己的设置的全局记录器:

我目前有一个自定义记录器类:

class customLogger(logging.Logger):
   ...

该类位于一个单独的文件中,其中包含一些格式化程序和其他内容。 记录器可以独立运行。

我在我的主 python 文件中导入这个模块并创建一个像这样的对象:

self.log = logModule.customLogger(arguments)

但显然,我无法从代码的其他部分访问此对象。 我使用了错误的方法吗?有没有更好的方法来做到这一点?

最佳答案

使用 logging.getLogger(name)创建一个命名的全局记录器。

ma​​in.py

import log
logger = log.setup_custom_logger('root')
logger.debug('main message')

import submodule

log.py

import logging

def setup_custom_logger(name):
    formatter = logging.Formatter(fmt='%(asctime)s - %(levelname)s - %(module)s - %(message)s')

    handler = logging.StreamHandler()
    handler.setFormatter(formatter)

    logger = logging.getLogger(name)
    logger.setLevel(logging.DEBUG)
    logger.addHandler(handler)
    return logger

submodule.py

import logging

logger = logging.getLogger('root')
logger.debug('submodule message')

输出

2011-10-01 20:08:40,049 - DEBUG - main - main message
2011-10-01 20:08:40,050 - DEBUG - submodule - submodule message

关于Python:日志记录模块 - 全局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7621897/

相关文章:

python - 将大矩阵与dask相乘

c# - 使用C#记录错误

python - 记录协程感知变量

java - 如何使用 spring 记录 RestTemplate 请求和响应?

module - 如何重新加载 Python3 C 扩展模块?

javascript - 由于 MIME 类型不允许,无法加载模块脚本

python - 将 CNN 过滤器权重可视化为 tensorflow 中的 numpy 数组

python - Django 不提供静态文件,出现 404 错误

python - 是否有用于从 python 中的文本文件生成 pdf 的简单库?

python - 命名约定 : What does the 'm' mean in libpython3. 5m.dylib