logging日志模块

logging模块的简单使用

代码:使用范例

  • 注意:需保证有logs文件夹,用于存放日志文件。
# encoding: utf-8

# 创建logger
import logging.handlers
import os
from time import sleep


def create_logger(logger_name, rotate_type="FILE"):
    logger = logging.getLogger(logger_name)
    logger.setLevel(logging.INFO)
    # 创建handler,用于写入文件
    BASE_DIR = os.path.abspath(os.path.dirname(__file__))
    BASE_DIR = os.path.join(BASE_DIR, "logs")
    LOGS_DIR = os.path.join(BASE_DIR, "{}.log".format(logger_name))
    if rotate_type == "TIME":
    	# 按时间分割日志(天)
        file_handler = logging.handlers.TimedRotatingFileHandler(LOGS_DIR, 'D', 1)
    else:
    	# 按文件分割日志(保留3个备份,每个1024*8个字节)
        file_handler = logging.handlers.RotatingFileHandler(LOGS_DIR, mode='a', maxBytes=1024*8, backupCount=3)
    file_handler.setLevel(logging.INFO)  # 日志等级:INFO
    # 创建handler,用于输出到控制台
    console_handler = logging.StreamHandler()
    console_handler.setLevel(logging.INFO)  # 日志等级:INFO
    # 定义handler输出格式
    formatter = logging.Formatter('%(asctime)-15s %(threadName)-10s %(filename)30s[line:%(lineno)3d] %(levelname)s %(message)s')
    file_handler.setFormatter(formatter)
    console_handler.setFormatter(formatter)
    logger.addHandler(file_handler)
    logger.addHandler(console_handler)
    return logger


logger = create_logger("task")

# # 测试日志分割模式
# flag = 0
# while True:
#     sleep(0.1)
#     flag += 1
#     logger.warning("row: {}".format(flag))

参数详解

RotatingFileHandler

Class logging.handlers.RotatingFileHandler(filename,mode ='a',maxBytes = 0,backupCount = 0,encoding = None,delay = False )

以文件分割(迭代)日志,当一个日志文件写满,则往新文件写入。

  • maxBytes:文件最大字节数
  • backupCount:保留旧文件个数
  • 注意:只有以上两个参数其中之一为0,日志文件将不会分割(迭代)。
示例
  • 代码:
logging.handlers.RotatingFileHandler(LOGS_DIR, mode='a', maxBytes=1024*8, backupCount=3)
  • 结果:
    在这里插入图片描述

TimedRotatingFileHandler

Class logging.handlers.TimedRotatingFileHandler(filename,when ='h',interval = 1,backupCount = 0,encoding = None,delay = False,utc = False,atTime = None )

以指定时间来分割(迭代)日志,每个日志文件保存指定时间范围的日志记录。日志文件分割(迭代)是根据when和 interval的乘积。

  • when:间隔类型
    • 基于工作日的分割(迭代)时,将无视interval参数。
      在这里插入图片描述
  • interval:间隔格式
  • backupCount:最多将保留指定数量的文件
示例
  • 代码:
logging.handlers.TimedRotatingFileHandler(LOGS_DIR, 'D', 1)
  • 结果:
    在这里插入图片描述

使用配置文件

参考

  • 官方文档(RotatingFileHandler 与 TimedRotatingFileHandler):Logging handlers
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值