logging 用法

本文详细介绍Python内置logging模块的使用方法,包括日志级别的设定、日志格式的配置、日志输出位置的选择及日志文件的管理。适用于开发环境中DEBUG、INFO级别的使用,以及生产环境中WARNING、ERROR、CRITICAL级别的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等。可以设置不同的日志等级,默认的日志级别设置为WARNING。还可以由开发者决定将信息输出到什么地方,以及怎么输出。

 

1、logging日志级别

开发环境使用DEBUG、INFO级别,生产环境多使用WARNING、ERROR、CRITLCAL。

 

2、logging 模块使用

import logging : 导入包

logging.basicConfig() :用于指定“要记录的日志级别”、“日志格式”、“日志输出位置”、“日志文件的打开模式”。

logging.warning('warning message') :打印警告,其他级别用法一致。

 

3、具体参数说明

basicConfig() 参数如下:

 

 

 

### Python中使用Logging模块进行日志记录 #### 导入Logging模块并设置基本配置 为了开始使用`logging`模块,在脚本文件的顶部导入该模块,并调用`basicConfig()`函数来设定一些必要的参数,比如日志级别、格式以及目标输出位置等[^1]。 ```python import logging # 配置日志的基本设置 logging.basicConfig( level=logging.DEBUG, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", filename='app.log', # 将日志写入指定文件 filemode='w' # 覆盖模式打开日志文件,默认是追加模式'a' ) ``` #### 创建Logger对象 虽然可以直接通过`logging`模块的方法(如`debug()`, `info()`等)发送消息给默认的日志处理器,但是更推荐的做法是创建自己的`Logger`实例。这允许更加精细地控制不同部分的日志行为[^2]。 ```python logger = logging.getLogger('my_logger') handler = logging.StreamHandler() formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') handler.setFormatter(formatter) logger.addHandler(handler) # 设置最低严重程度;低于这个级别的日志将被忽略 logger.setLevel(logging.INFO) ``` #### 记录不同类型的消息 一旦完成了上述准备工作之后就可以利用不同的方法来记录各种类型的事件了。每种类型对应着特定的颜色编码和重要性等级: - `DEBUG`: 开发期间用于调试目的的信息; - `INFO`: 描述正常操作流程的一般状态更新; - `WARNING`: 表明某些意外情况发生但不影响整体功能的通知; - `ERROR`: 报告错误条件下的异常状况; - `CRITICAL`: 极其严重的错误,可能导致应用程序无法继续运行下去[^3]。 ```python try: result = 10 / 0 except ZeroDivisionError as e: logger.error(f"An error occurred while dividing by zero: {e}") finally: logger.info("Operation completed.") ``` #### 自定义日志格式与多目的地输出 除了简单的文本形式外还可以自定义日志条目所呈现的方式,甚至同时向多个地方发送相同的内容副本。例如,既保存至本地磁盘又显示于终端屏幕上[^4]。 ```python console_handler = logging.StreamHandler() file_handler = logging.FileHandler('error_log.txt') # 定义两种不同的格式化器分别应用于两个处理程序上 simple_formatter = logging.Formatter('%(levelname)s:%(message)s') detailed_formatter = logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s') console_handler.setFormatter(simple_formatter) file_handler.setFormatter(detailed_formatter) # 添加这两个新的处理器到我们的logger里去 logger.addHandler(console_handler) logger.addHandler(file_handler) # 测试一下效果 logger.warning('This will appear on screen and also saved into the file.') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值