当前位置: 首页 > news >正文

Python日志配置

1.下载pyyaml库

pip install pyyaml

2.YAML 配置文件 (logging_config.yaml)

version: 1
disable_existing_loggers: False
formatters:simple:format: '[%(asctime)s] [logger:%(name)s] [file:%(filename)s:%(lineno)d] [level:%(levelname)s] - [message:%(message)s]'datefmt: '%Y-%m-%d %H:%M:%S'handlers:console:class: logging.StreamHandlerlevel: INFOformatter: simplestream: ext://sys.stdoutfile:class: logging.FileHandlerlevel: DEBUGformatter: simplefilename: app.logmode: aencoding: utf-8loggers:my_logger:level: DEBUGhandlers: [console, file]propagate: noroot:level: DEBUGhandlers: [console, file]

在这个配置中:

  • console 处理器将日志输出到控制台,并且只显示INFO及以上的日志。
  • file 处理器将日志写入到名为 app.log 的文件,并且记录DEBUG及以上的所有日志。
  • my_logger 和根日志记录器都使用这两个处理器,因此日志会同时输出到控制台和文件。

3.Python 脚本

在Python脚本中加载并应用这个YAML配置文件:

import logging
import logging.config
import yaml# 从YAML文件加载日志配置
with open('logging_config.yaml', 'r') as f:config = yaml.safe_load(f.read())logging.config.dictConfig(config)# 获取并使用自定义的日志记录器
my_logger = logging.getLogger('my_logger')
my_logger.debug('这是一个调试信息')
my_logger.info('这是一个普通信息')
my_logger.warning('这是一个警告信息')
my_logger.error('这是一个错误信息')
my_logger.critical('这是一个严重错误信息')# 获取并使用根日志记录器
root_logger = logging.getLogger()
root_logger.info('这是根日志记录器的信息')

4.日志输出示例

假设当前时间是2024-10-23 16:48:00,并且脚本名为example.py,那么在控制台和app.log文件中的日志输出可能如下所示:

控制台输出
[2024-10-23 16:48:00] [logger:my_logger] [file:example.py:5] [level:INFO] - [message:这是一个普通信息]
[2024-10-23 16:48:00] [logger:my_logger] [file:example.py:6] [level:WARNING] - [message:这是一个警告信息]
[2024-10-23 16:48:00] [logger:my_logger] [file:example.py:7] [level:ERROR] - [message:这是一个错误信息]
[2024-10-23 16:48:00] [logger:my_logger] [file:example.py:8] [level:CRITICAL] - [message:这是一个严重错误信息]
[2024-10-23 16:48:00] [logger:root] [file:example.py:11] [level:INFO] - [message:这是根日志记录器的信息]
文件 app.log 输出
[2024-10-23 16:48:00] [logger:my_logger] [file:example.py:4] [level:DEBUG] - [message:这是一个调试信息]
[2024-10-23 16:48:00] [logger:my_logger] [file:example.py:5] [level:INFO] - [message:这是一个普通信息]
[2024-10-23 16:48:00] [logger:my_logger] [file:example.py:6] [level:WARNING] - [message:这是一个警告信息]
[2024-10-23 16:48:00] [logger:my_logger] [file:example.py:7] [level:ERROR] - [message:这是一个错误信息]
[2024-10-23 16:48:00] [logger:my_logger] [file:example.py:8] [level:CRITICAL] - [message:这是一个严重错误信息]
[2024-10-23 16:48:00] [logger:root] [file:example.py:11] [level:INFO] - [message:这是根日志记录器的信息]

这样,日志消息会同时出现在控制台和日志文件中。控制台只会显示INFO及以上级别的日志,而文件会记录DEBUG及以上级别的所有日志。


http://www.mrgr.cn/news/57039.html

相关文章:

  • 原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
  • [PHP]Undefined index错误只针对数组
  • Java | Leetcode Java题解之第502题IPO
  • 2024软考网络工程师笔记 - 第10章.组网技术
  • OQE-OPTICAL AND QUANTUM ELECTRONICS
  • 神经网络模型内部
  • 技术总结(十一)
  • Rust中的Sync特征:确保多线程间安全共享数据
  • 几何算法系列:空间实体体积计算公式推导
  • 不同分辨率的大致带宽
  • 树莓集团:人工智能赋能,共创智慧未来
  • sql数据库的命令行操作(DDL修改表)
  • 餐饮点餐系统小程序源码
  • LeetCode-3185 构成整天的下标对数目Ⅱ
  • 利士策分享,给成功抛个媚眼,学习能否成为“丘比特”?
  • 解除123云盘1G下载限制油猴脚本方法
  • 冒泡,选择,插入,快速,归并排序(JavaScript)代码实现
  • 【面试题】什么是SpringBoot以及SpringBoot的优缺点
  • TitanIDE:解锁编程教学新范式
  • 软考科目怎么选?软考科目选哪个好?
  • Cilium Network Policy
  • 【Excel】函数各类公式总结
  • 问丫|快来打造你的专属 AI 数字分身,畅享独特社交体验!
  • 【Trick】IOS系统解决“未受信任的企业级开发者”问题
  • 【Linux系统】Ubuntu的简单操作
  • 探秘 ArrayList:源码剖析与扩容策略