首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python日志记录:自定义记录器没有输出

Python日志记录:自定义记录器没有输出
EN

Stack Overflow用户
提问于 2019-12-10 21:53:28
回答 1查看 292关注 0票数 1

使用tutorial:https://realpython.com/python-logging/,我有以下脚本,只包含:

代码语言:javascript
复制
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.debug('I am a debug msg')
logger.info('I am an info msg')

它应该将字符串同时写入控制台和文件('file.log')。文件已创建,bot没有任何内容。而且也没有输出到控制台。你知道是什么导致了这种情况吗,或者是缺少了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-10 22:08:21

您忘记设置记录器本身的详细级别:

代码语言:javascript
复制
import logging

# Create a custom logger
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG) # The logger still needs its verbose level

# 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.debug('I am a debug msg')
logger.info('I am an info msg')

另外,我建议根据每个处理程序来阻止你的代码,而不是类似的语法:

代码语言:javascript
复制
import logging

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

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

# File Handler
f_handler = logging.FileHandler('file.log')
f_handler.setLevel(logging.DEBUG)
f_format = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
f_handler.setFormatter(f_format)
logger.addHandler(f_handler)

logger.debug('I am a debug msg')
logger.info('I am an info msg')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59268788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档