将子模块登录到单独的文件

时间:2020-03-09 19:57:02

标签: python logging module python-requests handler

谁能帮我知道这是否有可能做到。我在任何地方都找不到想做的例子。基本上,我有一个主脚本和导入到主脚本中的多个下标。我有日志记录设置,以将每个模块记录到其自己的文件中。但是,这两个下标都使用了请求模块。是否可以将请求调试消息记录到使用它的脚本文件中?这是脚本示例。

script1.py

import logging
import requests

log = logging.getLogger(__name__)

def test():
    log.debug('this is script 1')
    r = requests.get('https://www.stackoverflow.com')

script2.py

import logging
import requests

log = logging.getLogger(__name__)

def test2():
    log.debug('This is script2')
    r = requests.get('https://www.google.com')

main.py

import logging, logging.handlers
import script1
import script2


logging.basicConfig(level=logging.DEBUG)
log = logging.getLogger()

script1log = logging.getLogger('script1')
script1log.propagate = False
script2log = logging.getLogger('script2')
script2log.propagate = False

def setup_logging(filename):    
    filelog = logging.handlers.TimedRotatingFileHandler(filename+'.log',
                    when='midnight', interval=1, backupCount=3)
    fileformatter = logging.Formatter('%(asctime)s %(name)-15s %(levelname)-8s %(message)s')
    filelog.setFormatter(fileformatter)
    return filelog

log.addHandler(setup_logging('main'))
script1log.addHandler(setup_logging('script1'))
script2log.addHandler(setup_logging('script2'))

if __name__ == '__main__':
    setup_logging('main')
    log.debug('this is main')

    script1.test()
    script2.test2()

我知道我可以通过执行

来获得所有请求
requests_log = logging.getLogger('requests.packages.urllib3')

但是,这会捕获来自两个脚本的请求并将它们放置在同一文件中。我想区分请求的使用位置。

如果可能的话,我很想看看怎么做。

谢谢!

0 个答案:

没有答案