网易首页 > 网易号 > 正文 申请入驻

Python 库手册:logging 日记记录模块

0
分享至

Python 的 logging 模块是官方推荐的日志记录工具,适用于小型脚本和大型系统。它提供了灵活统一的日志处理机制,可将日志信息输出到终端、文件、网络服务等多种媒介,支持日志等级分类、格式化输出、日志轮换和多模块共享。

常见应用场景:

(1)程序运行时的信息跟踪(debug、info、error 等)。

(2)错误记录与异常分析(尤其用于线上系统)。

(3)多模块项目的统一日志管理。

(4)日志文件的自动轮换(配合 handlers)。

(5)跨模块或多线程日志追踪。

◆ ◆

核心概念

1、日志等级(Log Levels)

日志分为五个主要等级,按严重程度升序排列:

DEBUG:最详细的信息,通常用于调试。

INFO:普通运行信息。

WARNING:警告,但程序还能继续运行。

ERROR:错误,程序部分功能可能失败。

CRITICAL:严重错误,程序可能无法继续运行。

2. 四大核心组件

Logger:记录器,用于产生日志。通常用 logging.getLogger(name) 获取。

Handler:处理器,控制日志输出位置(终端、文件、邮件等)。

Formatter:格式器,定义日志内容的输出格式。

Filter:过滤器,用于细粒度地控制日志输出内容。

◆ ◆

应用举例

例 1:最简单用法(打印 INFO 级别日志)

import logging

logging.basicConfig(level=logging.INFO)
logging.info("程序启动成功")

例 2:设置日志格式和输出文件

import logging

logging.basicConfig(
    filename='app.log',
    filemode='a',
    level=logging.DEBUG,
    format='%(asctime)s - %(levelname)s - %(message)s'
)

logging.debug("调试信息")
logging.error("发生错误")

例 3:使用 Logger 对象与多个 Handler

import logging

# 创建 Logger
logger = logging.getLogger('myapp')
logger.setLevel(logging.DEBUG)

# 控制台输出
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)

# 文件输出
file_handler = logging.FileHandler('myapp.log')
file_handler.setLevel(logging.WARNING)

# 日志格式
formatter = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
console_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)

# 添加 Handler
logger.addHandler(console_handler)
logger.addHandler(file_handler)

# 测试输出
logger.debug("调试")
logger.info("普通信息")
logger.warning("警告")
logger.error("错误")

例 4:通过异常信息记录日志

import logging

logging.basicConfig(level=logging.ERROR)

try:
    result = 10 / 0
except Exception as e:
    logging.exception("捕获到异常")  # 自动附带 traceback

例 5:日志轮换(RotatingFileHandler)

import logging
from logging.handlers import RotatingFileHandler

logger = logging.getLogger("rotate")
logger.setLevel(logging.INFO)

# 最大 1MB,最多保留 3 个文件
handler = RotatingFileHandler("rotate.log", maxBytes=1_000_000, backupCount=3)
formatter = logging.Formatter('%(asctime)s - %(message)s')
handler.setFormatter(formatter)

logger.addHandler(handler)

logger.info("这是循环日志测试")

◆ ◆

常用函数速览

basicConfig(**kwargs)

快速配置日志系统(适用于简单场景)。

参数

filename:日志输出文件名(若设定则写入文件)

level:日志级别,如 logging.INFO

format:日志格式字符串

filemode:文件模式,如 'w'、'a'

返回:无返回,直接配置全局日志系统

getLogger(name=None)

获取指定名称的 Logger 对象,便于模块内独立使用。

参数:name 为日志器名称,None 为 root logger

返回:Logger 实例,可进行后续调用

log(level, msg, *args)

通用日志方法,手动传入日志级别。

参数

level:整数形式的日志级别,如 logging.WARNING

msg:消息字符串,支持 %s 占位符格式化

返回:无返回

debug(msg) / info(msg) / warning(msg) / error(msg) / critical(msg)

按不同级别输出日志。

参数:msg 为日志内容

返回:无返回,输出日志

exception(msg)

在 except 块中使用,自动输出堆栈信息。

参数:msg 为日志内容

返回:无返回,相当于 error() + traceback 信息

◆ ◆

补充说明

1、basicConfig() 只会在首次调用时生效,之后调用将被忽略(除非重启解释器)。

2、实际项目中推荐使用 getLogger() 创建多个模块级 Logger。

3、配置可通过代码或使用 dictConfig/fileConfig 实现更复杂的方案。

4、RotatingFileHandler 和 TimedRotatingFileHandler 是生产环境常用文件日志方案。

5、可通过 Logger.propagate = False 阻止日志向上级传播。

点赞有美意,赞赏是鼓励

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
特斯拉新车曝光:无方向盘、无踏板、无后视镜

特斯拉新车曝光:无方向盘、无踏板、无后视镜

澎湃新闻
2026-02-21 02:12:18
1980年,宋庆龄对要结婚的养女隋永清说:如果他敢打你,马上离婚

1980年,宋庆龄对要结婚的养女隋永清说:如果他敢打你,马上离婚

大运河时空
2026-02-20 14:55:03
湛江妈祖事件真相!当地村民称不是抬不动轿子,而是根本不敢走啊

湛江妈祖事件真相!当地村民称不是抬不动轿子,而是根本不敢走啊

火山詩话
2026-02-21 14:13:36
贝加尔湖事故遇难者遗体已被发现,涉事司机为44岁当地男子,系私下接单;获救者是来自江苏省的一位男性

贝加尔湖事故遇难者遗体已被发现,涉事司机为44岁当地男子,系私下接单;获救者是来自江苏省的一位男性

都市快报橙柿互动
2026-02-21 00:08:59
震惊!小妈祖高兴时的样貌,才知被妈祖选中的孩子,果然与众不同

震惊!小妈祖高兴时的样貌,才知被妈祖选中的孩子,果然与众不同

火山詩话
2026-02-20 08:24:21
贝加尔湖7名遇难中国游客遗体已被发现,目击者:唯一幸存者在沉湖前最后一刻打开车门;司机为当地44岁男子,或涉违规私下接单

贝加尔湖7名遇难中国游客遗体已被发现,目击者:唯一幸存者在沉湖前最后一刻打开车门;司机为当地44岁男子,或涉违规私下接单

每日经济新闻
2026-02-21 12:38:14
63岁阿姨说:和再婚老伴同居后才懂得,男人老了还要找老伴的原因

63岁阿姨说:和再婚老伴同居后才懂得,男人老了还要找老伴的原因

烙任情感
2026-02-20 11:04:02
男子打麻将连续自摸胡牌后突然瘫倒在牌桌前!送医时血压飙到201/115mmHg

男子打麻将连续自摸胡牌后突然瘫倒在牌桌前!送医时血压飙到201/115mmHg

闪电新闻
2026-02-20 22:54:48
湛江妈祖事件升级!小妈祖直播报平安,一句“我很好”看哭不少人

湛江妈祖事件升级!小妈祖直播报平安,一句“我很好”看哭不少人

火山詩话
2026-02-21 06:44:08
Coco说她很怀念在香港的日子,很怀念和谢贤在一起的12年

Coco说她很怀念在香港的日子,很怀念和谢贤在一起的12年

西楼知趣杂谈
2026-02-19 21:09:49
彻底清醒了?郭台铭带回46台光刻机,300亿,霸气喊话:全包华为芯片

彻底清醒了?郭台铭带回46台光刻机,300亿,霸气喊话:全包华为芯片

科技虎虎
2026-02-21 12:16:56
2月21日冬奥会看点:金牌伉俪携手再冲冠,谷爱凌迎卫冕之战

2月21日冬奥会看点:金牌伉俪携手再冲冠,谷爱凌迎卫冕之战

全景体育V
2026-02-21 07:15:18
湛江妈祖事件到发生了什么?后续女孩回应来了,福建老板集体拉黑

湛江妈祖事件到发生了什么?后续女孩回应来了,福建老板集体拉黑

社会日日鲜
2026-02-21 06:56:42
俄乌打了4年,西方终于发现情况不妙:俄军弹药怎么打不完?

俄乌打了4年,西方终于发现情况不妙:俄军弹药怎么打不完?

空天力量
2026-02-21 13:06:08
湛江妈祖事件曝光!网传今年换人请9次圣杯,全是反对,资本慌了

湛江妈祖事件曝光!网传今年换人请9次圣杯,全是反对,资本慌了

火山詩话
2026-02-20 08:52:55
“这是输了?”得知关税被判违法,特朗普暴怒 在场州长:感觉他头都气炸了

“这是输了?”得知关税被判违法,特朗普暴怒 在场州长:感觉他头都气炸了

红星新闻
2026-02-21 12:42:33
48岁欧阳夏丹父母双亡独自过年,一个人吃7道菜,大口吃饭不矫情

48岁欧阳夏丹父母双亡独自过年,一个人吃7道菜,大口吃饭不矫情

离离言几许
2026-02-20 23:38:28
河北女婿到江西过年,大年初三吃泡面!满眼看去桌上全是辣菜,妻子:他说江西菜吃腻了

河北女婿到江西过年,大年初三吃泡面!满眼看去桌上全是辣菜,妻子:他说江西菜吃腻了

极目新闻
2026-02-20 17:01:59
柬埔寨向26国通报:驱逐涉案外籍人员8000余名 超21万名外籍人员自行离境 已对包括陈志犯罪集团在内的500余起犯罪案件起诉

柬埔寨向26国通报:驱逐涉案外籍人员8000余名 超21万名外籍人员自行离境 已对包括陈志犯罪集团在内的500余起犯罪案件起诉

每日经济新闻
2026-02-21 11:46:14
42死300伤!北海道暴雪困住中国游客,有人喊话:祖国包机来接人

42死300伤!北海道暴雪困住中国游客,有人喊话:祖国包机来接人

青眼财经
2026-02-20 23:31:25
2026-02-21 16:23:00
MediaTea
MediaTea
专业的数字媒体、新媒体技术
1761文章数 77关注度
往期回顾 全部

科技要闻

智谱上市1月涨5倍,市值超越京东、快手

头条要闻

在贝加尔湖遇难的3名中国游客身份已确认:系一家人

头条要闻

在贝加尔湖遇难的3名中国游客身份已确认:系一家人

体育要闻

冬奥第一"海王"?一人和13国选手都有关系

娱乐要闻

镖人反超惊蛰无声拿下单日票房第二!

财经要闻

一觉醒来,世界大变,特朗普改新打法了

汽车要闻

比亚迪的“颜值担当”来了 方程豹首款轿车路跑信息曝光

态度原创

艺术
健康
时尚
游戏
公开课

艺术要闻

史洪生油画作品

转头就晕的耳石症,能开车上班吗?

2026纽约秋冬时装周,在春天开启美的新故事!

2026秋季3A大作扎堆!《影之刃零》独挑"各大门派"

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版