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及以上级别的所有日志。

相关推荐
杨超越luckly15 分钟前
基于地铁刷卡数据分析与可视化——以杭州市为例
大数据·python·阿里云·数据挖掘·数据分析
杜若南星1 小时前
保研考研机试攻略:python笔记(2)
数据结构·经验分享·笔记·python·考研·算法
子午2 小时前
【手势识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+机器学习+Django网页界面+算法模型
python·深度学习·django
咸芝麻鱼2 小时前
django模板出现:‘WSGIRequest‘ object has no attribute ‘Get‘错误
后端·python·django
盖丽男2 小时前
cursor连接远程jupyter
ide·python·jupyter
子午2 小时前
【果蔬识别】Python+卷积神经网络算法+深度学习+人工智能+机器学习+TensorFlow+计算机课设项目+算法模型
人工智能·python·深度学习
胖哥真不错2 小时前
Python基于TensorFlow实现简单循环神经网络回归模型(SimpleRNN回归算法)项目实战
python·rnn·tensorflow·项目实战·简单循环神经网络回归模型·simplernn回归算法
z千鑫2 小时前
【AI开源项目】Botpress - 开源智能聊天机器人平台及其部署方案
人工智能·python·机器人·开源·自动化·oneapi
_.Switch2 小时前
Python 自动化运维:CI/CD与DevOps实践的深度探讨
运维·python·ci/cd·自动化·devops