当前位置: 首页 > 面试题库 >

Python:日志记录模块-全局

苏季同
2023-03-14
问题内容

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

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

class customLogger(logging.Logger):
   ...

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

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

self.log = logModule.customLogger(arguments)

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


问题答案:

使用logging.getLogger(name)创建一个名为全球记录。

main.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日志模块,并希望禁用由我导入的第三方模块打印的日志消息。例如,我使用的是如下所示: 当我执行logger.debug时,它会输出我的调试消息(“my Message!”),但它也会从我导入的任何模块中输出调试消息(如请求和许多其他东西)。 我只想看到我感兴趣的模块的日志消息。有没有可能让日志模块做到这一点?

  • 本文向大家介绍python日志记录模块实例及改进,包括了python日志记录模块实例及改进的使用技巧和注意事项,需要的朋友参考一下 python 打印对象的所有属性值: Python logger对象属性(由上述函数获取的) 部分日志无法输出 File:logger.conf File:logger.py 问题一:测试过程中,只能打印出test_logger function一条语句 问题二:明明

  • 问题内容: 我正在使用python记录器。以下是我的代码: 我的问题是我在每个呼叫的日志文件中都有多个条目。我该如何解决? 问题答案: 该已经是一个单例。(文件) 问题在于,每次调用时,都会向实例添加另一个处理程序,这将导致日志重复。 也许像这样?

  • 问题内容: 我正在尝试用Python的日志记录模块替换临时日志记录系统。我正在使用日志记录系统在一行上输出长任务的进度信息,因此您可以在控制台中记录日志或查看它。我通过在日志记录功能上设置一个标志来完成此操作,该标志可禁止该日志消息的换行符并逐段构建该行。 所有日志记录都是从单个线程完成的,因此没有序列化问题。 使用Python的日志记录模块可以做到这一点吗?这是个好主意吗? 问题答案: 让我们从

  • 我的目标是从多个模块进行日志记录,同时只在一个地方配置记录器--在主程序中。如本答案所示,应包括 在主程序中,然后在所有其他模块中包括 我相信这就是我在下面所做的,然而我却得到了意想不到的行为。 我所期望的是,当在中执行时,会从记录一条消息,然而,情况并非如此。这是令人困惑的,因为当在中从模块级调用记录器时,它会将消息记录到控制台,但当从内部调用时,它不会。 所以我注意到如果我移除这条线 从开始,

  • 问题内容: 我想检查特定背景文件中的错误,但是标准错误流由前台程序控制,并且问题中文件中的错误未显示。不过,我可以使用该模块并将输出写入文件。我想知道如何使用它来记录所有异常,错误及其回溯。 问题答案: 记录程序中引发的 任何 异常可能是一个坏主意,因为Python还将异常用于正常控制流。 因此,您应该只记录 未捕获的 异常。一旦有了异常对象,就可以使用记录器的方法轻松地执行此操作。 要处理所有未