您现在的位置是:首页 > python教程 > 正文

Python日志模块 logging 如何实现将日志输出并保存至文件

编辑:本站更新:2024-09-04 08:00:22人气:2478
在 Python 编程中,处理和记录程序运行时产生的各种事件、错误及调试信息是一项至关重要的任务。标准库中的 `logging` 模块为此提供了一个功能丰富且高度可定制的解决方案,它可以方便地把日志内容同时输出到控制台以及保存至指定的日志文件中。

首先,在使用 logging 模块之前需要进行基本配置以初始化一个 Logger 对象,并设置其级别(DEBUG, INFO, WARNING, ERROR 和 CRITICAL 等)。下面是一个创建 logger 的基础示例:

python

import logging

# 创建名为 'my_logger' 的logger实例,默认层级为WARNING
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG) # 设置最低显示的日志等级为 DEBUG

# 定义handler用于存储日志消息
file_handler = logging.FileHandler(filename='app.log')
console_handler = logging.StreamHandler()

# 配置 handler 输出格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
console_handler.setFormatter(formatter)

# 将定义好的处理器添加给Logger对象
logger.addHandler(file_handler) # 日志也将被存入'app.log'
logger.addHandler(console_handler) # 同时也会打印到终端 stdout

# 开始生成日志条目
logger.debug("Debug message")
logger.info("Info message")
logger.warning("Warning message")


上述代码完成了以下几项关键操作:

1. 使用 `getLogger()` 函数获取或创建一个名字为 "my_logger" 的 logger 实例。
2. 调用 `.setLevel(level)` 方法设定此 logger 所需关注的消息最小严重性级别 (在此处是(DEBUG),这意味着所有高于或等于这个级别的消息都会被捕获并进一步传递给已关联的所有 handlers 处理)。
3. 分别通过 `FileHandler` 类与 `StreamHandler` 类创建了两个不同的 Handler:一个是将日志写入磁盘上的 “app.log” 文件;另一个则是直接向当前进程的标准输出流(stdout通常是命令行界面或者IDE console)发送数据。
4. 初始化 Formatter 并将其应用到每个 Handler 上来规范日志输出格式,其中包括时间戳、logger 名称、日志级别及其对应的信息正文。
5. 最后,利用`.addHandler(handler)`方法将这两个 Handlers 添加到了我们先前建立的 my_logger 中。

这样就实现了既能在屏幕实时查看日志又可以同步持久化储存于特定文件的功能需求。当执行含有这些语句的脚本时,“debug”,“info”,“warning”这三种不同级别的日志会按照预设样式分别出现在屏幕上和 app.log 文件内。

总结来说,Python 标准库提供的 logging 模块具有强大的灵活性和扩展能力,通过对 loggers、handlers 及 formatters 进行合理搭配和细致调整,我们可以构建出满足复杂场景下多样化日志收集与分析要求的应用系统架构。而在实际开发过程中灵活运用这一机制,则有助于提升软件系统的稳定性和后期维护效率。
关注公众号

www.php580.com PHP工作室 - 全面的PHP教程、实例、框架与实战资源

PHP学习网是专注于PHP技术学习的一站式在线平台,提供丰富全面的PHP教程、深入浅出的实例解析、主流PHP框架详解及实战应用,并涵盖PHP面试指南、最新资讯和活跃的PHP开发者社区。无论您是初学者还是进阶者,这里都有助于提升您的PHP编程技能。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

最新推荐

本月推荐