python日志模块

7 篇文章 0 订阅

 使用方式:

  1. 创建一个logger.py文件,将代码复制进去。
  2. 在另一个python脚本main.py中,直接导入 from logger import getLogging
  3. 创建日志对象 logger = getLogging("/tmp/logs/filename", True),第二参数为True,表示调用脚本时(python3 main.py),日志也会打印在控制台上。
  4. logger.info(f"这一个info类型的日志")。logger.warning(f"这是一个warning类型的日志")。logger.error(f"这是一个error类型的日志")。

如果想只是使用一下的话,不关注原理的话,可以直接创建一个logger.py文件,然后将代码复制过去。

import logging
from logging.handlers import RotatingFileHandler

def getLogging(file: str, console: bool):
    """
    获取日志对象
    :param file: 日志文件落盘地址
    :param console: 是否输出到控制台
    :return: 日志对象
    """
    # 获取logger对象
    logger = logging.getLogger(__name__)
    # 设置日志打印级别,例如info级别可以打印info、warning、error
    logger.setLevel(level=logging.INFO)
    # 日志格式
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    # 如果当file满足2048KB之后,就转为备份文件file.1,重新写file。当file再满的时候,file.1变为file.2,file变为file.1,再重新写file
    # 这个底层其实不是真实复制文件,而只是重新命名了一下文件罢了
    sizeHandler = RotatingFileHandler(file, maxBytes=1024 * 2048, backupCount=10)
    sizeHandler.setLevel(logging.INFO)          # 设置文件打印级别
    sizeHandler.setFormatter(formatter)         # 设置文件打印格式
    logger.addHandler(sizeHandler)              # 日志对象添加文件打印

    if console:                                 # 是否输出到控制台
        console = logging.StreamHandler()       # 控制台打印对象
        console.setLevel(logging.INFO)          # 控制台打印级别
        console.setFormatter(formatter)         # 控制台打印设置日志格式
        logger.addHandler(console)              # 日志对象添加控制台打印

    return logger                               # 返回日志对象




# 参数:作用
#
# %(levelno)s:打印日志级别的数值
# %(levelname)s:打印日志级别的名称
# %(pathname)s:打印当前执行程序的路径,其实就是sys.argv[0]
# %(filename)s:打印当前执行程序名
# %(funcName)s:打印日志的当前函数
# %(lineno)d:打印日志的当前行号
# %(asctime)s:打印日志的时间
# %(thread)d:打印线程ID
# %(threadName)s:打印线程名称
# %(process)d:打印进程ID
# %(message)s:打印日志信息


# handler名称:位置;作用
#
# StreamHandler:logging.StreamHandler;日志输出到流,可以是sys.stderr,sys.stdout或者文件
# FileHandler:logging.FileHandler;日志输出到文件
# BaseRotatingHandler:logging.handlers.BaseRotatingHandler;基本的日志回滚方式
# RotatingHandler:logging.handlers.RotatingHandler;日志回滚方式,支持日志文件最大数量和日志文件回滚
# TimeRotatingHandler:logging.handlers.TimeRotatingHandler;日志回滚方式,在一定时间区域内回滚日志文件
# SocketHandler:logging.handlers.SocketHandler;远程输出日志到TCP/IP sockets
# DatagramHandler:logging.handlers.DatagramHandler;远程输出日志到UDP sockets
# SMTPHandler:logging.handlers.SMTPHandler;远程输出日志到邮件地址
# SysLogHandler:logging.handlers.SysLogHandler;日志输出到syslog
# NTEventLogHandler:logging.handlers.NTEventLogHandler;远程输出日志到Windows NT/2000/XP的事件日志
# MemoryHandler:logging.handlers.MemoryHandler;日志输出到内存中的指定buffer
# HTTPHandler:logging.handlers.HTTPHandler;通过"GET"或者"POST"远程输出到HTTP服务器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值