python日志记录器的配置

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

python日志记录器的配置

Python 日志记录器(logging)的配置是项目开发中非常关键的一环,它帮助开发者追踪程序运行状态、排查错误和监控系统行为。合理的配置能让日志输出清晰、结构化,并便于后期分析。

基本的日志级别设置

Python 的 logging 模块提供了五个标准日志级别,按严重性递增:

  • DEBUG:详细信息,通常只在调试时使用
  • INFO:确认程序按预期运行
  • WARNING:表示某些意外发生,但程序仍在工作
  • ERROR:由于问题导致部分功能失败
  • CRITICAL:严重错误,可能导致程序无法继续运行

默认的日志级别是 WARNING,低于该级别的日志不会被记录。可以通过以下方式设置:

import logging
<p>logging.basicConfig(level=logging.INFO)
logging.info("这是一条 info 级别的日志")</p>
登录后复制

配置输出格式和目标

你可以自定义日志的输出格式,包括时间、日志级别、模块名、消息内容等。同时可以指定输出到控制台或文件。

立即学习Python免费学习笔记(深入)”;

import logging
<p>logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler("app.log"),
logging.StreamHandler()  # 输出到控制台
]
)</p>
登录后复制

上面的配置会将日志同时写入 app.log 文件并打印到终端。format 中常用字段:

Topaz Video AI
Topaz Video AI

一款工业级别的视频增强软件

Topaz Video AI 388
查看详情 Topaz Video AI
  • %(asctime)s:可读的时间戳
  • %(name)s:记录器名称
  • %(levelname)s:日志级别名称
  • %(message)s:日志内容
  • %(funcName)s:函数名
  • %(lineno)d:行号

使用 logger 实例管理不同模块

建议不要直接使用 logging.debug() 等全局方法,而是创建独立的 logger 实例,便于模块化管理。

logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
<h1>防止重复添加 handler</h1><p>if not logger.handlers:
handler = logging.StreamHandler()
formatter = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)</p><p>logger.info("来自 %s 模块的信息", <strong>name</strong>)</p>
登录后复制

通过字典配置实现灵活管理

对于复杂项目,推荐使用字典方式集中配置日志,提升可维护性。

import logging.config
<p>LOGGING_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']
}
}</p><p>logging.config.dictConfig(LOGGING_CONFIG)
logger = logging.getLogger('myapp')
logger.debug("这是从 myapp 记录器输出的调试信息")</p>
登录后复制

基本上就这些。合理配置 logging 能极大提升程序可观测性,关键是根据实际需求选择合适的级别、格式和输出方式。不复杂但容易忽略细节,比如避免重复 handler 或正确设置 propagate

以上就是python日志记录器的配置的详细内容,更多请关注php中文网其它相关文章!

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号