新闻中心

python中如何用logging把日志输出到文件和控制台?

2025-11-26
浏览次数:
返回列表
答案:通过添加FileHandler和StreamHandler,可实现日志同时输出到文件和控制台。首先创建logger并设置级别,防止重复添加handler需清空已有handler或禁用propagate;接着分别为文件和控制台创建handler,设定Formatter格式化输出,并可独立设置级别如文件DEBUG、控制台INFO;推荐使用dictConfig方式集中管理配置,便于维护。示例中日志写入app.log并输出到控制台,支持中文编码utf-8,避免重复日志与层级传递问题。

python中如何用logging把日志输出到文件和控制台?

在 Python 中使用 logging 模块同时将日志输出到文件和控制台,需要为 logger 添加多个 handler:一个 FileHandler 用于写入文件,一个 StreamHandler 用于输出到控制台。

1. 基本配置示例

以下代码展示如何设置日志同时输出到文件 app.log 和控制台:

import logging
<h1>创建 logger</h1><p>logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)  # 设置日志级别</p><h1>防止重复添加 handler(重要)</h1><p>logger.propagate = False
if logger.handlers:
logger.handlers.clear()</p><h1>创建 handler:文件和控制台</h1><p>file_handler = logging.FileHandler('app.log', encoding='utf-8')
console_handler = logging.StreamHandler()</p><h1>设置日志格式</h1><p>formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
console_handler.setFormatter(formatter)</p><h1>设置 handler 的日志级别(可不同)</h1><p>file_handler.setLevel(logging.DEBUG)
console_handler.setLevel(logging.INFO)</p><h1>添加 handler 到 logger</h1><p>logger.addHandler(file_handler)
logger.addHandler(console_handler)</p><h1>使用 logger</h1><p>logger.debug('这是调试信息')
logger.info('这是普通信息')
logger.warning('这是警告')
logger.error('这是错误')</p>

2. 关键点说明

  • 避免重复日志:如果多次运行脚本或在模块中定义 logger,可能重复添加 handler。清空已有 handler 或使用唯一命名可避免该问题。
  • propagate=False:防止日志向上传递给父 logger(如 root),避免意外重复输出。
  • 不同级别输出:可以为文件设置 DEBUG 级别,记录所有细节;控制台设为 INFO,只显示重要信息,便于调试与监控平衡。
  • 编码设置:写入中文日志时,FileHandler 应指定 encoding='utf-8' 防止乱码。

3. 使用 dictConfig 简化配置(推荐)

对于复杂项目,可用 dictConfig 统一管理:

Python v2.4 中文手册 chm Python v2.4 中文手册 chm

Python v2.4版chm格式的中文手册,内容丰富全面,不但是一本手册,你完全可以把她作为一本Python的入门教程,教你如何使用Python解释器、流程控制、数据结构、模板、输入和输出、错误和异常、类和标准库详解等方面的知识技巧。同时后附的手册可以方便你的查询。

Python v2.4 中文手册 chm 2 查看详情 Python v2.4 中文手册 chm

import logging.config
<p>LOGGING_CONFIG = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'standard': {
'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
},
},
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'app.log',
'encoding': 'utf-8',
'formatter': 'standard',
},
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'standard',
},
},
'loggers': {
'my_logger': {
'handlers': ['file', 'console'],
'level': 'DEBUG',
'propagate': False
}
}
}</p><p>logging.config.dictConfig(LOGGING_CONFIG)
logger = logging.getLogger('my_logger')</p><p>logger.info('通过 dictConfig 配置的日志')</p>

基本上就这些。只要正确添加两个 handler 并设置好格式与级别,就能灵活地把日志同时输出到文件和屏幕。

以上就是python中如何用logging把日志输出到文件和控制台?的详细内容,更多请关注其它相关文章!


# 如何将  # 陕西百度网站关键词排名  # 铁岭企业seo电话  # 安康网站seo  # 四川企业公司网站建设  # 贵溪网站制作推广  # vue.js seo prendee  # 佛山口碑seo报价  # 企业广告网站建设  # 韩国关键词排名查询网站  # 泰州需要网站建设的公司  # 组播  # 清空  # 源代码  # python  # 数据包  # 转换为  # 一本  # 已有  # 如何用  # 这是  # gate  # 格式化输出  # stream  # app  # 编码  # logging 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: win11如何卸载Windows更新补丁 Win11解决更新导致系统不稳定的问题【修复】  Golang切片为何属于引用类型_Golang slice底层结构与引用语义说明  顺丰国际快递查询 国际件官方查询入口  在哪找SublimeJ远程工具_SFTP插件配置教程  知音漫客正版漫画平台_知音漫客官网账号登录  Safari怎么安装扩展程序 浏览器插件安装与管理方法【详解】  微信群消息显示延迟如何解决 微信群消息刷新优化方法  红果短剧网页版官网入口 官方最新网址发布  TypeScript/J*aScript:高效查找数组中首个唯一ID对象  Excel组合图表怎么做 Excel创建柱状图与折线组合图教程【图表】  谷歌学术网站直达地址 谷歌学术搜索网页版一键进入  如何在网页中实现特定地点的随机图片展示  蛙漫画网页版全站入口 蛙漫热门作品免费浏览  ArrayList与LinkedList核心操作的Big-O复杂度分析  不同用户不同价格! 索尼开启账户个性化定价测试  荣耀Play7T运行卡顿解决_荣耀Play7T性能优化  如何在J*a中使用Locale处理多语言环境  sublime怎么进行远程开发编辑_配置rsub/rmate实现sublime编辑服务器文件  SteamMachine定价或为699美元 大家想入手吗?  Word2013如何插入视频和音频媒体_Word2013媒体插入的多媒体支持  excel怎么制作工资条 excel快速生成工资条的方法  Pandas DataFrame 多条件优先级排序与排名  实现全屏滚动与导航点:专业教程  c++如何使用Catch2编写单元测试_c++简洁易用的BDD风格测试框架  React Hooks最佳实践:动态组件状态管理的组件化方案  Win10系统服务哪些可以禁用 Win10安全优化服务列表【干货】  蛙漫安全无毒 官方认证的绿色入口  win11开机启动修复循环怎么办 Win11无法进入系统高级启动解决方法【修复】  韩小圈电脑版在线入口_网页版免费登录地址  自定义Bag-of-Words实现:处理带负号的词汇权重  抓大鹅无需下载版 抓大鹅秒玩版入口  探索高级语言到C/C++的转译路径:以Go为例及内存管理策略  J*aScript数据结构转换:将对象数组按类别分组  J*a里如何实现线程安全的懒加载单例_懒加载单例实现方法解析  j*a toString()的覆盖  Tabulator表格中精确实现日期时间排序的指南  漫蛙2在线漫画入口 漫蛙正版漫画网页版直达  海棠账号登录入口_登录海棠账户同步阅读记录  KFC套餐升级怎么获取优惠代码_KFC套餐升级活动与优惠代码获取方法  拼多多购物车商品数量无法修改如何处理 拼多多购物车操作优化方法  Python大型XML文件高效流式解析教程  AO3最新可访问网址 Archive of Our Own官方在线入口  手机屏幕碎了但能正常使用怎么办 手机外屏碎裂的修复建议  汽水音乐网页版使用入口_汽水音乐电脑版播放指南  支付宝解绑银行卡步骤_支付宝如何解除绑定银行卡  如何有效阻止外部脚本意外修改内联样式的高度属性  qq游戏网页版直接玩_qq游戏免下载快速入口  谷歌浏览器浏览体验优化_谷歌浏览器新版直连永久可用提示  中兴Axon42Ultra怎样在文件App筛图_iPhone中兴Axon42Ultra文件App筛图【图片筛选】  J*a中实现Go语言select通道多路复用机制 

搜索