Python日志打印logging库的基础使用

一、logging日志的基本信息

日志按严重级别(level)分为以下几个等级:

  • DEBUG
  • INFO
  • NOTICE
  • WARNING
  • ERROR
  • CRITICAL
  • ALERT
  • EMERGENCY

二、logging日志的组件

logging模块有四大组件

  • logger:对程序创建一个日志记录器
  • handler:对日志记录器创建一个处理方式(例如:输出到终端窗口、输出到文件)
  • filter:(暂时没用到)
  • formatter:定义记录日志的输出格式

三、logging日志的基本处理方式

logging.StreamHandler ——输出到终端控制窗口
logging.FileHandler ——输出到文件
logging.handlers.RotatingFileHandler ——按文件大小自动分割日志,达到max则生成新的文件
logging.handlers.TimedRotatingFileHandler ——按时间自动分割日志

四、logging日志基本代码实现

主要步骤:
1、创建日志记录器 —— logger
2、设置日志记录器的基本输出等级 —— setLevel
3、创建日志处理器 —— Handlers:
a. 创建FileHandler、StreamHandler或是TimedRotatingFileHandler
b. 设置处理器想输出的日志等级(最终输出等级是与记录器的相比取最高等级)
c. 设置输出格式 —— setFormatter
d. 添加到logger中 —— addHandler
具体细节实现根据不同处理器有所不同。

import logging
import logging.handlers

class Logger:
    def __init__(self):
        self.logger = logging.getLogger()
        self.logger.setLevel(level=logging.DEBUG)
        # self.__creat_file_handler()
        self.__creat_stream_handler()
        self.__creat_time_rotating_file_handler()
    def __creat_file_handler(self):
        file_name = 'log.txt'
        file_handler = logging.FileHandler(file_name)
        file_handler.setLevel(level=logging.DEBUG)
        file_formatter = logging.Formatter('[%(asctime)s] [%(levelname)s] [%(filename)s][%(lineno)d]: %(message)s')
        file_handler.setFormatter(file_formatter)
        self.logger.addHandler(file_handler)

    def __creat_stream_handler(self):
        stream_handler = logging.StreamHandler()
        stream_handler.setLevel(level=logging.WARNING)
        stream_formatter = logging.Formatter('[%(asctime)s] [%(levelname)s] [%(filename)s][%(lineno)d]: %(message)s')
        stream_handler.setFormatter(stream_formatter)
        self.logger.addHandler(stream_handler)

    def __creat_time_rotating_file_handler(self):
        time_rotating_file_handler = logging.handlers.TimedRotatingFileHandler(filename='log.txt',
                                                                               when='midnight')
        time_rotating_file_formatter = logging.Formatter(
            '[%(asctime)s] [%(levelname)s] [%(filename)s][%(lineno)d]: %(message)s')

        time_rotating_file_handler.setLevel(logging.DEBUG)
        time_rotating_file_handler.setFormatter(time_rotating_file_formatter)
        time_rotating_file_handler.suffix = "%Y-%m-%d.txt"
        self.logger.addHandler(time_rotating_file_handler)


log = Logger()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值