python配置日志记录

配置Python日志需先调用basicConfig设置级别、格式和输出位置,或创建Logger实例并添加Handler与Formatter以实现多目标输出;对于长期运行服务,应使用RotatingFileHandler或TimedRotatingFileHandler实现按大小或时间轮转日志文件。

python配置日志记录

H3 配置Python日志记录的基本方法

在Python中,logging 模块是内置的日志管理工具,使用它能有效记录程序运行过程中的信息。合理配置日志有助于调试和监控系统行为。

H3 使用 basicConfig 进行简单配置

最基础的配置方式是调用 logging.basicConfig(),可以在程序启动时一次性设置日志格式、输出位置和级别。

示例:

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

import logging

logging.basicConfig(level=logging.INFO, # 设置最低记录级别format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',filename='app.log', # 日志写入文件filemode='a' # 追加模式)

使用日志

logging.info("程序启动")logging.warning("这是一个警告")logging.error("发生错误")

说明:

level:控制哪些级别的日志会被记录(DEBUG format:定义日志输出格式,常用字段包括时间、日志器名、级别、消息内容filename:指定日志文件路径,不设置则默认输出到控制台filemode:’a’ 表示追加,’w’ 表示每次覆盖

H3 使用 Logger 对象实现更灵活控制

对于复杂项目,推荐创建独立的 Logger 实例,并添加 Handler 和 Formatter。

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

import logging

获取一个独立的日志器

logger = logging.getLogger('my_app')logger.setLevel(logging.DEBUG)

避免重复输出(防止向上级传递)

logger.propagate = False

数据源可配置的记事日历插件
数据源可配置的记事日历插件

数据源可配置的记事日历插件

数据源可配置的记事日历插件 52
查看详情 数据源可配置的记事日历插件

创建处理器:同时输出到文件和控制台

fh = logging.FileHandler('debug.log')ch = logging.StreamHandler()

设置级别

fh.setLevel(logging.DEBUG)ch.setLevel(logging.INFO)

定义格式

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(funcName)s - %(message)s')fh.setFormatter(formatter)ch.setFormatter(formatter)

添加处理器

logger.addHandler(fh)logger.addHandler(ch)

使用

logger.debug("详细调试信息")logger.info("普通提示")logger.error("出错了!")

这种方式的优点:

可为不同模块分配不同的日志器支持多个输出目标(文件、控制台、网络等)每个输出可以有不同的格式和级别控制

H3 日志轮转(按大小或时间切割)

长时间运行的服务会产生大量日志,建议使用 RotatingFileHandlerTimedRotatingFileHandler 自动分割日志文件。

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

from logging.handlers import RotatingFileHandlerimport os

按文件大小轮转

handler = RotatingFileHandler('app.log',maxBytes=1010241024, # 10MBbackupCount=5 # 保留5个备份)

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

from logging.handlers import TimedRotatingFileHandlerimport time

按时间轮转(每天一个文件)

handler = TimedRotatingFileHandler('app.log',when='midnight',interval=1,backupCount=7,encoding='utf-8')

文件名自动加上日期后缀

handler.suffix = "%Y-%m-%d"

基本上就这些。根据项目规模选择合适的配置方式,小项目用 basicConfig 就够了,大项目建议使用自定义 Logger + 多处理器的方式,便于维护和排查问题。

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1382014.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月14日 23:31:21
下一篇 2025年12月14日 23:31:37

相关推荐

  • python中如何用集合set给列表去重?

    使用set去重会打乱顺序,list(set(lst))适用于无需保序场景;需保序时推荐dict.fromkeys(),可高效保留原始顺序。 在Python中,用集合(set)给列表去重是一个常见且高效的方法。因为集合中的元素是**唯一且无序**的,所以可以利用它自动去除重复项。 基本方法:使用 se…

    好文分享 2025年12月14日
    000
  • python中s3cmd是什么?

    s3cmd是一个用Python编写的开源命令行工具,用于通过简单命令与S3协议兼容的云存储服务交互,支持上传、下载、删除、同步文件及管理权限等操作;它依赖boto等库调用RESTful API,虽不可在Python代码中直接import使用,但可通过subprocess模块在脚本中调用其命令,适合运…

    2025年12月14日
    000
  • 如何冻结项目依赖并分享给团队

    答案:通过生成并提交依赖锁定文件、纳入版本控制、提供清晰安装说明及定期同步更新,可确保团队开发环境一致。例如Python用pip freeze生成requirements.txt,Node.js使用package-lock.json或yarn.lock,Go通过go.mod和go.sum锁定版本,均…

    2025年12月14日
    000
  • Python 文件锁机制的实现方法

    文件锁用于防止多进程或线程同时读写同一文件导致数据冲突。1. fcntl模块在Unix/Linux下实现建议性锁,需所有进程遵守规则;2. portalocker库跨平台兼容,封装了fcntl和msvcrt,使用简单;3. 原子写入通过临时文件加os.rename()实现,适用于写操作频繁且读写不重…

    2025年12月14日
    000
  • python实现信息熵的计算代码

    信息熵是衡量数据不确定性的指标,计算公式为H(X) = -Σ p(x) * log₂(p(x)),可通过Python实现。使用NumPy统计类别频次并计算概率,再求和得到熵值;需处理p=0时的边界情况,避免log(0)错误。代码适用于二分类、多分类及文本标签,如[‘猫’, &…

    2025年12月14日
    000
  • python中PyQuery库是什么?

    PyQuery 是一个受 jQuery 启发的 Python 库,用于解析和操作 HTML 文档,支持从字符串、文件或 URL 加载内容,可通过 CSS 选择器查找元素、获取文本与属性,实现链式调用和 DOM 遍历修改,常用于网络爬虫和静态页面处理,可与 requests 结合使用,语法直观简洁,适…

    2025年12月14日
    000
  • python面向对象中类如何实现?

    Python中类用class定义,采用驼峰命名法,通过__init__初始化属性,self引用实例,支持封装、继承与多态,类属性共享,实例属性独有,实现代码复用与组织。 在Python中,类是通过关键字 class 来定义的,它是面向对象编程的核心结构。类用来封装数据(属性)和操作数据的方法,实现代…

    2025年12月14日
    000
  • Python 文件下载功能的实现方法

    使用urllib、requests可实现Python文件下载。urllib无需安装,适合简单场景;requests更灵活,支持流式下载大文件并显示进度,推荐用于常规项目。 Python 实现文件下载功能有多种方式,常用且实用的方法包括使用内置库 urllib、第三方库 requests,以及处理大文…

    2025年12月14日
    000
  • 如何使用python实现项目进度显示?

    答案:Python中实现项目进度显示常用tqdm库或手动打印。使用tqdm可快速为循环添加含百分比、耗时等信息的动态进度条;通过print配合r回车符可实现不依赖第三方库的基础进度刷新;复杂场景可通过回调函数统一管理进度,tqdm适合多数情况,手动控制更灵活。 在Python中实现项目进度显示,主要…

    2025年12月14日
    000
  • Python 使用 gzip 压缩文件的方法

    Python中使用gzip模块可轻松压缩文件。1. 用gzip.open()以’wt’模式写入文本并压缩为.gz文件,支持中文;2. 可读取已有文件内容并写入压缩文件实现压缩;3. 处理二进制数据时使用’wb’模式,适用于pickle序列化对象;4. …

    2025年12月14日
    000
  • Python 如何保证文件写入不丢失数据

    使用with语句可确保文件正确关闭,flush()将数据推送到系统缓冲区,os.fsync()强制写入磁盘,配合文件锁处理并发,能有效防止数据丢失。 Python 中保证文件写入不丢失数据,关键在于正确使用上下文管理器、调用刷新与同步方法,并理解操作系统缓存机制。以下是具体做法。 使用 with 语…

    2025年12月14日
    000
  • python中如何查看stdin编码?

    答案是sys.stdin.encoding可直接获取标准输入编码,如utf-8或cp936;在重定向、管道或非终端环境可能为None或不一致,需结合locale.getpreferredencoding()参考,且该属性只读不可修改。 在Python中查看stdin的编码方式,可以通过sys.std…

    2025年12月14日
    000
  • Python 文件修改时间与创建时间读取

    答案:在Python中可通过os.path和pathlib模块获取文件时间;1. 使用os.path.getmtime()获取修改时间;2. os.path.getctime()在Windows返回创建时间,Linux为inode更改时间;3. pathlib提供更现代语法,file_path.st…

    2025年12月14日
    000
  • python日志库的模块化方法

    通过分层命名、配置分离和封装初始化逻辑实现Python日志模块化:1. 利用logging模块的层级结构,按模块命名(如app.main)统一管理日志级别;2. 将配置抽离至独立文件或模块,启动时加载,保持业务代码简洁;3. 封装setup_logger等工厂函数,统一处理handler、格式化和输…

    2025年12月14日
    000
  • 初学者用 VS Code 搭建 Python 环境的全流程

    答案是用VS Code搭建Python环境只需五步:安装Python并添加到PATH,下载VS Code,安装Python扩展,创建运行hello.py文件,最后配置解释器选择正确版本即可开始编程。 刚接触 Python 的新手常常被环境配置搞得一头雾水。其实用 VS Code 搭建 Python …

    2025年12月14日
    000
  • Python 将文件内容批量替换的脚本编写

    答案:该脚本通过遍历指定目录,匹配特定扩展名文件,执行多组字符串替换,并支持备份原文件。使用时需注意编码、测试范围及大文件处理。 在处理文本文件时,经常会遇到需要批量替换文件中某些内容的情况。比如修改配置项、更新路径或统一命名规则等。Python 提供了简单高效的方式来实现这一需求。下面是一个实用的…

    2025年12月14日
    000
  • python中property函数的功能是什么?

    property函数将方法包装为属性,实现对私有属性的访问控制;2. 可定义getter、setter和deleter,用于拦截属性的读取、赋值和删除操作;3. 支持在不改变接口的情况下加入数据验证或逻辑处理。 在Python中,property函数的作用是将类中的方法包装成属性,使得调用该方法时无…

    2025年12月14日
    000
  • Python 处理文件编码错误的解决方法

    先明确文件真实编码并显式指定。常见方法包括:1. 打开时用encoding参数指定gbk、utf-8等;2. 用chardet库自动检测编码;3. 设置errors=’ignore’或’replace’处理异常字符;4. 将文件统一转为UTF-8编码保…

    2025年12月14日
    000
  • python中列表的索引如何理解?

    列表索引用于访问元素,从0开始正向计数,-1起反向计数,如[‘apple’,’banana’,’cherry’]中索引1为’banana’,-1为’cherry’,越界则报错。 列…

    2025年12月14日
    000
  • 如何将python函数模块化?

    将Python函数模块化是通过创建.py文件封装相关函数,再用import导入使用,例如将add、multiply等函数存入math_utils.py文件,主程序通过import math_utils或from math_utils import add等方式调用;项目较大时可构建包,如创建util…

    2025年12月14日
    000

发表回复

登录后才能评论
关注微信