日志配置需设置级别、格式和输出目标,推荐使用字典配置管理。1. 设置日志级别为DEBUG或INFO以控制输出;2. 自定义格式包含时间、级别、模块名等;3. 输出到文件和控制台;4. 创建独立logger实例避免全局调用;5. 使用dictConfig集中管理复杂配置,防止重复handler和错误传播。

Python 日志记录器(logging)的配置是项目开发中非常关键的一环,它帮助开发者追踪程序运行状态、排查错误和监控系统行为。合理的配置能让日志输出清晰、结构化,并便于后期分析。
基本的日志级别设置
Python 的 logging 模块提供了五个标准日志级别,按严重性递增:
DEBUG:详细信息,通常只在调试时使用INFO:确认程序按预期运行WARNING:表示某些意外发生,但程序仍在工作ERROR:由于问题导致部分功能失败CRITICAL:严重错误,可能导致程序无法继续运行
默认的日志级别是 WARNING,低于该级别的日志不会被记录。可以通过以下方式设置:
import logginglogging.basicConfig(level=logging.INFO)logging.info("这是一条 info 级别的日志")
配置输出格式和目标
你可以自定义日志的输出格式,包括时间、日志级别、模块名、消息内容等。同时可以指定输出到控制台或文件。
立即学习“Python免费学习笔记(深入)”;
import logginglogging.basicConfig(level=logging.DEBUG,format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',handlers=[logging.FileHandler("app.log"),logging.StreamHandler() # 输出到控制台])
上面的配置会将日志同时写入 app.log 文件并打印到终端。format 中常用字段:
%(asctime)s:可读的时间戳%(name)s:记录器名称%(levelname)s:日志级别名称%(message)s:日志内容%(funcName)s:函数名%(lineno)d:行号
使用 logger 实例管理不同模块
建议不要直接使用 logging.debug() 等全局方法,而是创建独立的 logger 实例,便于模块化管理。
logger = logging.getLogger(__name__)logger.setLevel(logging.DEBUG)防止重复添加 handler
if not logger.handlers:handler = logging.StreamHandler()formatter = logging.Formatter('%(name)s - %(levelname)s - %(message)s')handler.setFormatter(formatter)logger.addHandler(handler)
logger.info("来自 %s 模块的信息", name)
通过字典配置实现灵活管理
对于复杂项目,推荐使用字典方式集中配置日志,提升可维护性。
import logging.configLOGGING_CONFIG = {'version': 1,'disable_existing_loggers': False,'formatters': {'detailed': {'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s'},'simple': {'format': '%(levelname)s %(message)s'}},'handlers': {'console': {'class': 'logging.StreamHandler','level': 'INFO','formatter': 'simple','stream': 'ext://sys.stdout'},'file': {'class': 'logging.FileHandler','level': 'DEBUG','formatter': 'detailed','filename': 'debug.log','mode': 'a'}},'loggers': {'myapp': {'level': 'DEBUG','handlers': ['console', 'file'],'propagate': False}},'root': {'level': 'WARNING','handlers': ['file']}}
logging.config.dictConfig(LOGGING_CONFIG)logger = logging.getLogger('myapp')logger.debug("这是从 myapp 记录器输出的调试信息")
基本上就这些。合理配置 logging 能极大提升程序可观测性,关键是根据实际需求选择合适的级别、格式和输出方式。不复杂但容易忽略细节,比如避免重复 handler 或正确设置 propagate。
以上就是python日志记录器的配置的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1382948.html
微信扫一扫
支付宝扫一扫