在一个旧的 Zope 模块中,我在_init _py中找到了一个函数 add_file_logging() 。
使用logger2,我尝试记录一些INFOS,在add_file_logging() 中将级别设置为DEBUG。但是 INFOS 没有记录到文件中。错误记录到文件中。但是函数 add_file_logging() 必须在记录错误时执行。但是日志级别一定是问题所在,它没有设置。
使用logger1我做了同样的事情 - 相同的代码 - 使用类本身的函数 set_logger() 它工作得很好。
所以我想知道,为什么相同的方法在导入时不起作用。有人可以解释我的区别吗?
那肯定很不错 ;-)
myhelper.tools/src/myhelper/tools/worker.py
import os
import sys
import logging
import logging.handlers
from myhelper.tools import add_file_logging
logger1 = logging.getLogger('myLogger1')
logger2 = logging.getLogger('myLogger2')
class Worker(object):
def __init__(self):
self.to_delete = False
...
def set_logger (self, logger, logfile):
logger.setLevel(logging.DEBUG)
handler = logging.FileHandler(logfile)
handler.setLevel(logging.DEBUG)
logger.addHandler(handler)
def run(self):
self.set_logger(logger1, os.path.dirname(__file__) + "logger1.log")
add_file_logging(logger2, os.path.dirname(__file__) + "logger2.log")
...
def main():
work = XmlWorker()
work.run()
myhelper.tools/src/myhelper/tools/init .py _
init .py 下划线会自动删除到init.py ;-)
# -*- coding: utf-8 -*-
import logging
import logging.handlers
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(levelname)-8s %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S')
class AboveInfoFilter(logging.Filter):
def filter(self, record):
return record.levelno > 20
def add_file_logging (logger, logfile):
logger.setLevel(logging.DEBUG)
handler = logging.FileHandler(logfile)
handler.setLevel(logging.DEBUG)
logger.addHandler(handler)