logging - 模块

  • 当为程序指定了一个日志级别后,程序会记录所有日志级别大于等于指定日志级别的日志信息,而不仅仅是记录指定界别的日志信息
  • 一般建议只使用DEBUG、info、warning,error这四个级别
"""
步骤:
# 0. 导包
# 1. 创建日志器对象
# 2. 设置日志打印级别
    # logging.DEBUG 调试级别
    # logging.INFO 信息级别
    # logging.WARNING 警告级别
    # logging.ERROR 错误级别
    # logging.CRITICAL 严重错误级别
# 3. 创建处理器对象
# 3.1 输出到控制台
# 3.2 输出到日志文件
# 4. 创建格式化器
# 5. 给处理器设置格式化器
# 6. 给日志器添加处理器
# 7. 打印日志
"""

import logging.handlers
import time

# 1. 创建日志器对象
logger = logging.getLogger()
# 2. 设置日志打印级别
# logging.DEBUG 调试级别
# logging.INFO 信息级别
# logging.WARNING 警告级别
# logging.ERROR 错误级别
# logging.CRITICAL 严重错误级别
logger.setLevel(logging.INFO)

# 3. 创建处理器对象
# 输出到控制台
st = logging.StreamHandler()
# 输出到日志文件
# when 是一个字符串,定义了日志切分的间隔时间单位
# interval 是间隔时间单位的个数,指等待多少个 when 的时间后继续进行日志记录
# backupCount 是保留日志的文件个数
fh = logging.handlers.TimedRotatingFileHandler('a.log',
                                               when='midnight',
                                               interval=1,
                                               backupCount=3,
                                               encoding='utf-8')

# 4. 创建格式化器
fmt = "%(asctime)s %(levelname)s [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s"
formatter = logging.Formatter(fmt)
# 5. 给处理器设置格式化器
st.setFormatter(formatter)
fh.setFormatter(formatter)
# 6. 给日志器添加处理器
logger.addHandler(st)
logger.addHandler(fh)


# logging.debug('我是一个调试级别的日志')
logging.info('我是一个信息级别的日志')
# logging.warning('我是一个警告级别的日志')
# logging.error('我是一个错误级别的日志')
# logging.critical('我是一个严重错误级别的日志')
time.sleep(1)

格式化器占位符:

占位符 描述
%(name)s Logger的名字
%(levelname)s 文本形式的日志级别
%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
%(filename)s 调用日志输出函数的模块的文件名
%(module)s 调用日志输出函数的模块名
%(funcName)s 调用日志输出函数的函数名
%(lineno)d 调用日志输出函数的语句所在的代码行
%(asctime)s 字符串形式的当前时间。默认格式是 “2021-11-11 16:49:45,896”。
%(message)s 用户输出的消息
posted @   chuangzhou  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示