Skip to content

python loguru 日志记录

loguru

https://mp.weixin.qq.com/s/Jrr8jnNcBtf6CWRXR-SEMw

记录下个人常用的操作

异常捕捉

设置出现异常时自动发送异常邮件

@logger.catch 可以作为装饰器对异常进行捕捉, onerror可以指定一个函数作为参数, 参数值是错误对象.

from loguru import logger
from traceback import format_exc
from yagmail import SMTP

mailConfig = {
    'user': {
        'orange@ouf.cn': 'msg'
    },
    'password': 'msg',
    'host': '192.168.1.1',
    'port': 25,
    'smtp_ssl': False
}

mailUsers = {
    'orange@qq.com': 'orange',
}

def error_callback(errorText):
    # 程序异常捕捉, 发送报错信息到指定邮箱
    server = SMTP(**mailConfig)
    content = f'{now:%Y-%m-%d %H:%M:%S} 程序运行报错: \n{errorText}\n{format_exc()}'
    mailContent = {
        'to': mailUsers,
        'subject': '程序报错',
        'contents': content
    }
    server.send(**mailContent)
    server.close()


@logger.catch(onerror=error_callback)
def main():
    print(1/0)

文件操作

logger.add('./logs/dat.log', level='INFO', rotation="1 week", retention="90 days", compression="zip")

'./logs/dat.log' 表示日志存放的位置.

level 表示存储的级别

rotation 表示多久新建一个日志, 参数可以是12:00, 10 days, 500 MB, 1 week

compression 表示存储格式, compression="zip" 表示以zip压缩格式存储

retention 表示日志保留的时间

惰性计算

logger.opt(lazy=True).debug("If sink level <= DEBUG: {x}", x=lambda: expensive_function(2**64))

异步写入

# 异步写入
logger.add("some_file.log", enqueue=True)