繁体   English   中英

为什么没有记录信息和调试消息?

[英]Why info and debug messages are not getting logged?

我从真实的 python 复制了示例,并添加了另外两行来记录信息和调试级别的消息。 但是,它们永远不会被记录。 你知道出了什么问题吗?

import logging

# Create a custom logger
logger = logging.getLogger(__name__)

# Create handlers
c_handler = logging.StreamHandler()
f_handler = logging.FileHandler('file.log')
c_handler.setLevel(logging.INFO)
f_handler.setLevel(logging.DEBUG)

# Create formatters and add it to handlers
c_format = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
f_format = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
c_handler.setFormatter(c_format)
f_handler.setFormatter(f_format)

# Add handlers to the logger
logger.addHandler(c_handler)
logger.addHandler(f_handler)

logger.warning('This is a warning')
logger.error('This is an error')
logger.info('This is info')
logger.debug('Just debugging')

这会导致日志文件包含以下内容,即缺少信息和调试消息。

2021-12-07 20:40:16,301 - __main__ - WARNING - This is a warning
2021-12-07 20:40:16,301 - __main__ - ERROR - This is an error

现在我终于得到了答案,通过在这里提供指导。 我不知道为什么我上面的方法不起作用。 但是,我知道如何让它发挥作用。 我完全删除了 FileHandler,并将日志记录添加到基本配置中的文件中,如下所示。 现在我将调试级别登录到文件中,并将信息级别登录到控制台

import logging

f_format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'

logging.basicConfig(level=logging.DEBUG,
                    format=f_format,
                    filename='file.log',
                    filemode='w')

# Create a custom logger
logger = logging.getLogger(__name__)

c_format = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
c_handler = logging.StreamHandler()
c_handler.setLevel(logging.INFO)
c_handler.setFormatter(c_format)
logger.addHandler(c_handler)

logger.warning('This is a warning')
logger.error('This is an error')
logger.info('This is info')
logger.debug('Just debugging')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM