Python日志配置

1.下载pyyaml库

python 复制代码
pip install pyyaml

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

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.StreamHandler
    level: INFO
    formatter: simple
    stream: ext://sys.stdout

  file:
    class: logging.FileHandler
    level: DEBUG
    formatter: simple
    filename: app.log
    mode: a
    encoding: utf-8

loggers:
  my_logger:
    level: DEBUG
    handlers: [console, file]
    propagate: no

root:
  level: DEBUG
  handlers: [console, file]

在这个配置中:

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

3.Python 脚本

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

python 复制代码
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及以上级别的所有日志。

相关推荐
猫头虎14 小时前
Rust评测案例:Rust、Java、Python、Go、C++ 实现五大排序算法的执行时间效率比较(基于 OnlineGDB 平台)
java·开发语言·c++·python·golang·rust·排序算法
恒风521214 小时前
实时显示鼠标的坐标值,注意事件的(event)
python·信息技术类·对口高考
LeonDL16815 小时前
基于YOLO11深度学习的电梯内车辆识别系统【Python源码+Pyqt5界面+数据集+安装使用教程+训练代码】【附下载链接】
人工智能·python·深度学习·pyqt5·yolo数据集·yolo11深度学习·电梯内车辆识别系统
拾心2118 小时前
【云运维】Python基础(二)
python
fish_study_csdn21 小时前
Python内存管理机制
开发语言·python·c python
java1234_小锋1 天前
[免费]基于Python的农产品可视化系统(Django+echarts)【论文+源码+SQL脚本】
python·信息可视化·django·echarts
Danceful_YJ1 天前
31.注意力评分函数
pytorch·python·深度学习
程序员三藏1 天前
快速弄懂POM设计模式
自动化测试·软件测试·python·selenium·测试工具·设计模式·职场和发展
循环过三天1 天前
3.1、Python-列表
python·算法
青青草原羊村懒大王1 天前
python基础知识三
开发语言·python