多个模块的Python多重记录器 [英] Python multiple logger for multiple modules

查看:37
本文介绍了多个模块的Python多重记录器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个文件namley main.py和my_modules.py.在main.py中,我定义了两个这样的记录器

I have two files namley main.py and my_modules.py. In main.py I have defined two loggers like this

    #main.py
    URL_LOGS = "logs/urls.log"
    GEN_LOGS = 'logs/scrape.log'
    #Create two logger files    
    formatter = logging.Formatter('%(asctime)s %(name)s %(levelname)s %(message)s', datefmt="%Y-%m-%d %H:%M:%S")
    # first file logger
    url_info_logger = logging.getLogger('URL_Fetcher')
    hdlr_1 = logging.FileHandler(URL_LOGS)
    hdlr_1.setFormatter(formatter)
    url_info_logger.setLevel(logging.DEBUG)
    url_info_logger.addHandler(hdlr_1)

    #second Logger
    general_logger = logging.getLogger("GENERAL")
    hdlr_2 = logging.FileHandler(GEN_LOGS)
    hdlr_2.setFormatter(formatter)
    general_logger.setLevel(logging.DEBUG)
    general_logger.addHandler(hdlr_2)

   module1()
   do_something()

在第二个文件(my_modules.py)中,我必须同时使用两个记录器,以下是my_modules.py的示例代码

In my second file (my_modules.py) I have to use both loggers, Following is the sample code for my_modules.py

 #my_modules.py   
 import logging

    def module1():
        general_logger.info("Logger Module1")
        url_info_logger.info("New URL found")

    def do_something():
        general_logger.info("Logger Module2")
        url_info_logger.info("Url parsed")    

如何实现要在my_modules.py中访问的记录器

How do I implement loggers to be accessed in my_modules.py

推荐答案

记录文档引用:多次调用具有相同名称的getLogger()将始终返回对相同Logger对象的引用.

因此,您要在my_modules.py中执行的操作只是再次使用相同的名称调用 getLogger().

So what you want to do in your my_modules.py is just to call the getLogger() again with the same name.

#my_modules.py   
import logging

url_info_logger = logging.getLogger('URL_Fetcher')
general_logger = logging.getLogger("GENERAL")

def module1():
    general_logger.info("Logger Module1")
    url_info_logger.info("New URL found")

def do_something():
    general_logger.info("Logger Module2")
    url_info_logger.info("Url parsed")    

它应该返回相同的日志记录对象,因为在第二次调用它之前已经定义了它.

It should return the same logging object, since it is already defined before you call it the second time.

这篇关于多个模块的Python多重记录器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆