新闻中心

Python 使用 logging 将日志写入文件

2025-11-20
浏览次数:
返回列表
使用logging.basicConfig()可将日志写入文件,如指定filename='app.log'和format格式;进阶用法通过Logger对象添加FileHandler和StreamHandler,实现日志同时输出到文件和控制台,并可设置编码、格式、级别及防止重复输出。

python 使用 logging 将日志写入文件

在 Python 中使用 logging 模块将日志写入文件是一个常见且重要的需求,有助于调试和监控程序运行状态。下面介绍如何正确配置 logging,将日志输出到文件中。

基本用法:写入日志到文件

最简单的方式是使用 logging.basicConfig() 设置日志输出文件和格式:

import logging
<h1>配置日志,写入到文件 app.log</h1><p>logging.basicConfig(
level=logging.INFO,
filename='app.log',
filemode='a',  # 追加模式
format='%(asctime)s - %(levelname)s - %(message)s'
)</p><h1>写入几条日志</h1><p>logging.info("程序启动")
logging.warning("这是一个警告")
logging.error("发生了一个错误")</p>

执行后会在当前目录生成 app.log 文件,内容类似:

AlegroCart AlegroCart

AlegroCart新功能:维类:包括在这两种线性长宽高或面积或体积长波产品尺寸允许与期权产品:让产品/期权组合独特的数量,尺寸,图像和型号。选择店铺标识管理 图片放大镜:显示一个图片放大上空盘旋时,产品形象弹出框。自定义错误报告:设置在管理员启用。 开发者只可以显示详细的信息。错误信息都写入到错误日志文件每天可以通过电子邮件发送给管理员。仓库皮卡航运模块:允许客户指定产品在商店的位置回升。增加了

AlegroCart 0 查看详情 AlegroCart
2025-04-05 10:20:30,123 - INFO - 程序启动
2025-04-05 10:20:30,124 - WARNING - 这是一个警告
2025-04-05 10:20:30,124 - ERROR - 发生了一个错误

进阶配置:同时输出到文件和控制台

有时候你希望日志既写入文件,又在终端显示。可以通过添加多个 handler 实现:

import logging
<h1>创建 logger</h1><p>logger = logging.getLogger('MyApp')
logger.setLevel(logging.DEBUG)</p><h1>防止重复输出</h1><p>logger.propagate = False</p><h1>文件处理器</h1><p>file_handler = logging.FileHandler('app.log', mode='a', encoding='utf-8')
file_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(funcName)s - %(message)s')
file_handler.setFormatter(file_formatter)
logger.addHandler(file_handler)</p><h1>控制台处理器</h1><p>console_handler = logging.StreamHandler()
console_formatter = logging.Formatter('%(levelname)s: %(message)s')
console_handler.setFormatter(console_formatter)
logger.addHandler(console_handler)</p><h1>使用</h1><p>logger.info("这条日志会出现在文件和终端")
logger.error("出错了!")</p>

实用建议

  • 设置合适的日志级别:开发时可用 DEBUG,生产环境建议用 INFO 或 WARNING
  • 使用正确的文件编码:特别是记录中文时,指定 encoding='utf-8'
  • 合理选择 filemode'a' 是追加,'w' 每次清空重写
  • 按日期分割日志:可配合 logging.handlers.TimedRotatingFileHandler 实现自动轮转
  • 避免重复日志:自定义 logger 时设置 propagate=False 可防止向上层传递

基本上就这些。logging 模块功能强大,掌握基础用法后可以逐步扩展更复杂的日志管理策略。

以上就是Python 使用 logging 将日志写入文件的详细内容,更多请关注其它相关文章!


# 发生了  # 安徽徽州苗木网站推广  # 深圳保洁服务网站建设  # 营销推广对比图模板下载  # 重庆做网站建设费用多少  # 批量查360关键词排名  # 营销推广行为分析怎么写  # 南平seo公司推荐30火星  # 打开推广营销大门  # 侯马线上营销推广  # 安阳seo网络做推广  # 出现在  # 在这  # 多个  # python  # 是一个  # 命令行  # 自定义  # 可以通过  # 这是一个  # 进阶  # asic  # gate  # stream  # app  # 编码  # 处理器 


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


相关推荐: 夸克浏览器网页版最新地址 夸克浏览器官方入口合集  age动漫网站入口 age动漫官网直接访问入口  冬*霸灯泡不亮怎么办_浴霸取暖灯一盏不亮的灯座清洁修复法  小米14应用无法联网原因分析_小米14网络权限修复  c++ 命名空间怎么用 c++ namespace使用指南  微博网页版怎么开启两步验证_微博网页版账号安全两步验证设置方法  海棠账号登录入口_登录海棠账户同步阅读记录  Go语言中动态执行代码字符串的策略与实践  Python字典中优雅地迭代剩余元素的方法  css滚动动画效果怎么实现_使用Animate.css滚动触发动画类  12306选座如何查看座位示意图_12306座位示意图解读与使用  css滚动区域卡顿如何改善_css滚动问题用will-change优化渲染  Win11截图该按哪些键 Win11截屏完整流程解析【教程】  格力空气能E5故障代码是什么情况_格力空气能E5代码解析与应对措施  一加Ace 6T支持全新明眸护眼:通过了最严苛的护眼小金标认证  《刺客信条4:黑旗》重制版新细节曝光:无缝加载 地图更细致!  LINUX怎么设置定时任务_LINUX crontab配置教程  QQ邮箱网页版入口登录 QQ邮箱在线邮箱官方通道  Win11 USB传输速度慢怎么解决 Win11 USB驱动更新与设置  浏览器打开即用 美图秀秀网页版入口  Python中如何避免重复条件判断:利用数据结构实现动态逻辑  Go语言中对Map值调用带指针接收者方法:原理与最佳实践  学习通网页版快速入口 学习通官网网页版直接打开  Lar*el DB::listen 事件中的查询执行时间单位解析  将JSON对象数组转置为键值对列表的实用指南  Pandas DataFrame:高效添加条件计算列  J*a应用程序首次运行自动创建文件与目录的最佳实践  Lar*el Excel导入时生成自定义递增ID的策略与实践  Windows 11怎么彻底关闭定位_Windows 11服务中禁用Geolocation  Highcharts 雷达图径向轴标签定制指南:利用多Y轴实现数值标注  解决Django多数据库/多Schema环境下外键迁移问题  NRF24L01数据传输深度解析:解决大载荷接收异常与分包策略  J*aScript井字棋(Tic-Tac-Toe)核心交互逻辑实现教程  J*aScript中在Map循环中检测并处理空数组元素  QQ邮箱官方网站登录入口_QQ邮箱网页版在线使用  Bing引擎入口最新2025 Bing搜索免费官方登录  C++如何打印当前代码行号与文件名_C++预定义宏FILE与LINE的使用  处理动态列数据:J*a ArrayList的正确初始化与字符累加教程  Django AJAX 文件上传教程:解决图片无法保存到模型的常见问题  CSS Flexbox如何实现多行排列_flex-wrap wrap自动换行显示  Yandex搜索引擎一键访问入口_俄罗斯Yandex官网免登录  AO3官方可用镜像 Archive of Our Own网页版最新入口  如何使 Jest 模拟函数默认抛出错误以提高测试效率  css卡片内容溢出如何处理_使用overflow隐藏或scroll显示内容  支付宝碰一碰设备是REDMI手机吗 博主拆机辟谣:处理器、内存都不一样  CSS如何设置hover状态颜色_hover伪类调整背景或文字颜色  Lar*el用户头像管理:实现图片缩放、存储与旧文件安全删除的最佳实践  内存检查:在VS Code中调试C++时的内存视图  抖音极速版最新版本 抖音极速版官方下载地址  单射、满射与双射的关系 一文理清所有逻辑 

搜索