日志记录模块的级别

时间:2018-07-26 08:37:47

标签: python logging

import logging

logger = logging.getLogger("test.conf")   
logger.setLevel(logging.DEBUG)   

hterm =  logging.StreamHandler()    
hterm.setLevel(logging.ERROR)

hfile = logging.FileHandler("access.log")    
hfile.setLevel(logging.INFO)

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')   

hterm.setFormatter(formatter)   
hfile.setFormatter(formatter)   


logger.addHandler(hterm)    
logger.addHandler(hfile) 

class test(object):
    def post(self):
        try:
            logger.info('right')
        except:
            logger.error('wrong')

为什么日志(“正确”)将在控制台中打印,我已经设置了级别,我有什么想念的逻辑吗?

如果用以下代码替换类部分,则可以达到我的目的,但是当我添加类时,它不起作用

    logger.debug("User %s is loging" % 'jeck')
    logger.info("User %s attempted wrong password" % 'fuzj')
    logger.warning("user %s attempted wrong password more than 3 times" % 'mary')
    logger.error("select db is timeout")
    logger.critical("server is down")

在上面的代码中,它将打印严重和错误,并且所有级别都将写入文件。

1 个答案:

答案 0 :(得分:0)

您正在记录器上设置日志记录级别DEBUG,并尝试使用信息进行记录,因此将打印“正确”。顺序是:

  

调试->信息->错误->严重。

因此,如果您将日志记录级别设置为DEBUG,则将显示处理DEBUG的任何级别的日志。如果您将日志记录级别设置为ERROR,则会显示错误和严重级别的日志,而不显示调试和信息