为什么我的低级别的日志写入文件,但错误及以上呢?

问题描述 投票:0回答:1

我创建了一个小功能设置日志记录,与“一切”的FileHandler,并smtphandler错误及以上。错误日志写入日志文件,并正确地发送电子邮件,但调试,信息,notset不这样做,即使setlevel被设置为0的FileHandler。为什么?下面的代码

#logsetup.py
import logging
import logging.handlers

def _setup_logger(name, log_file):
    """Function to setup logger"""

    logger = logging.getLogger(name)

    #Create Formatters
    file_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    mail_formatter = logging.Formatter('%(name)s - %(message)s')

    #Create handler, set formatting, set log level
    file_handler_obj = logging.FileHandler(log_file)
    file_handler_obj.setFormatter(file_formatter)
    file_handler_obj.setLevel(0)

    #Create handler, set formatting, set log level
    smtp_handler_obj = logging.handlers.SMTPHandler(mailhost=('smtp.gmail.com', 587),
                        fromaddr='[email protected]',
                        toaddrs='[email protected]',
                        subject='Error in Script',
                        credentials=('[email protected]', 'pwexample'),   #username, password
                        secure=())
    smtp_handler_obj.setFormatter(mail_formatter)
    smtp_handler_obj.setLevel(logging.ERROR)

    # add the handlers to logger
    logger.addHandler(smtp_handler_obj)
    logger.addHandler(file_handler_obj)

    return logger

#mytest.py
import time
import logsetup

if __name__ == '__main__':

    TEST_SETTINGS = config_funcs._get_config('TEST_SETTINGS')

    logtime = time.strftime('%Y%m%d') # -%H%M%S")
    log = logsetup._setup_logger('TEST', TEST_SETTINGS['logging_dir'] + 'Py_Log_%s.log' % logtime)

    log.error('Writes to log file and sends email')
    log.debug('Supposed to write to log file, does nothing.')
python-3.x logging
1个回答
0
投票

显然,记录从处理器需要它自己的日志记录级别一边。设置logger.setLevel(logging.DEBUG)权利之前返回记录器使其正常工作。文件说,

当创建一个记录器,该电平被设置为NOTSET(这将导致当记录程序是根记录器,或委托给父当记录器是一个非根记录的所有消息将被处理)。需要注意的是根记录器与级别警告产生。

这意味着,如果处理程序比根记录较低的水平(这ERROR不大,但DEBUG是),那么我的猜测是孩子,因为我得到了一个名为记录的处理程序?不太清楚的原因吧,但也不“修复”它,万一有人谈到这一点。

© www.soinside.com 2019 - 2024. All rights reserved.