好用的日志模块,推荐给屏幕帅气的你

本文将介绍一个十分优雅、简洁的日志记录第三方库—— loguru
环境依赖

pip install loguru

基本使用,有debug/info/waring/error,有不同的颜色,有意思

from loguru import logger

logger.debug('This is debug information')
logger.info('This is info information')
logger.warning('This is warn information')
logger.error('This is error information')

在这里插入图片描述

基础语法

add(sink, *, level='DEBUG', format='<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>', filter=None, colorize=None, serialize=False, backtrace=True, diagnose=True, enqueue=False, catch=True, **kwargs)

参数说明:

serialize:在发送到 sink 之前,是否应首先将记录的消息转换为 JSON 字符串。

rotation:一种条件,指示何时应关闭当前记录的文件并开始新的文件。

**retention **:过滤旧文件的指令,在循环或程序结束期间会删除旧文件。

**retention **:过滤旧文件的指令,在循环或程序结束期间会删除旧文件。

mode:内置 open() 函数的打开模式,默认为 a(以追加模式打开文件)。




在这里插入图片描述
loguru 配置日志文件,loguru直接通过 add() 方法,日志的最低的日志级别是ERROR

from loguru import logger

logger.add("E:/PythonCode/MOC/log_2021-3-28.log", level='ERROR',rotation="500MB", encoding="utf-8", enqueue=True, retention="10 days",compression='zip')

logger.info('This is info information')

基本的创建日志,就会自动累加时间戳
在这里插入图片描述

loguru日志常用参数配置解析

1. rotation:分隔日志文件,何时关闭当前日志文件并启动一个新文件的条件,;例如,“500 MB”、“0.5 GB”、“1 month 2 weeks”、“10h”、“monthly”、“18:00”、“sunday”、“monday at 18:00”、“06:152. retention (str, int, datetime.timedelta or callable, optional) ,可配置旧日志的最长保留时间,例如,“1 week, 3 days”、“2 months”
3. compression (str or callable, optional) :日志文件在关闭时应转换为的压缩或归档格式,例如,“gz”、“bz2”、“xz”、“lzma”、“tar”、“tar.gz”、“tar.bz2”、“tar.xz”、“zip”

retention 配置日志保留机制
1.设置日志文件最长保留 7 天,如下:

from loguru import logger

trace = logger.add('2021-3-28.log', retention='7 days')

2.rotation 配置日志滚动记录的机制

200MB 创建一个日志文件,避免每个 log 文件过大
from loguru import logger
trace = logger.add('2021-3-28.log', rotation="200 MB")


#每天6点 创建一个日志文件
from loguru import logger
trace = logger.add('2021-3-28.log', rotation='06:00')


#每隔1周创建一个 日志文件
from loguru import logger
trace = logger.add('2021-3-28.log', rotation='1 week')

3.compression 配置日志压缩格式,其格式支持:gz、bz2、xz、lzma、tar、tar.gz、tar.bz2、tar.xz

from loguru import logger

trace = logger.add('2021-3-28.log', compression='zip')

设置日志文件最多保留 10 个:

logger.add('runtime_{time}.log', retention=10)

设置日志文件最多保留 5 个小时:

import datetime
from loguru import logger

logger.add('runtime_{time}.log', retention=datetime.timedelta(hours=5))

异常追溯#

from loguru import logger


@logger.catch
def my_function(x, y, z):
    # An error? It's caught anyway!
    return 1 / (x + y + z)


my_function(0, 0, 0)

在这里插入图片描述
举例说明:

#!/usr/bin/python3
# -*- coding:utf-8 -*-
"""
@author: fly
@file: goings.py
@time: 2021/11/26 16:52
@contact: 280135197@qq.com
@desc: 
"""
import time
import requests
from apscheduler.schedulers.blocking import BlockingScheduler
from apscheduler.events import EVENT_JOB_EXECUTED, EVENT_JOB_ERROR
import datetime
# import logging
#
# logging.basicConfig(level=logging.INFO,
#                     format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
#                     datefmt='%Y-%m-%d %H:%M:%S',
#                     filename='going.log',
#                     filemode='a')
from loguru import logger

logger.add("goings.log", level='INFO',rotation="1MB", encoding="utf-8", enqueue=True, retention="2 days")

logger.info("开始了哦")

def url_push(urls):
    print(f"当前进行中的赛事有{len(urls)}场")
    print(urls[-1])
    logger.info(f"当前进行中的赛事有{len(urls)}场")
    logger.info(f'{time.strftime("%Y-%m-%d %H:%M:%S")}, {urls}')
    url = 'http://127.0.0.1:5001/pturls'
    data = {"urls": urls}
    response = requests.post(url, json=data)
    print(response.text)
    logger.info(response.text)


def Up_ongoing():
    urls = []
    sport_ids = [1, 2, 3]
    for i in sport_ids:
        url = "http://47.115.7.4:9902/business/all_game/ongoing_data_py"
        result = requests.post(url, json={"sportId": i}).json()
        matchId = result.get('data')
        for mid in matchId:
            upurl = f"https://api-c3.aiscore.com/v1/app/match/summary?match_id={mid}&lang=1"
            urls.append(upurl)
    url_push(urls)


def my_listener(event):
    if event.exception:
        print('任务出错了!!!!!!')
    else:
        print('任务照常运行...')


scheduler = BlockingScheduler(timezone='Asia/Shanghai') 
scheduler.add_job(func=Up_ongoing, trigger='interval', minutes=5, id='interval_task')
scheduler.add_listener(my_listener, EVENT_JOB_EXECUTED | EVENT_JOB_ERROR)
scheduler._logger = logger
scheduler.start()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值