第三方库:logger,自定义日志封装模块

为了使用方便,二次封装logger。

import os
import datetime
from loguru import logger


class Logings:
    __instance = None
    # 文件名称,按天创建
    DATE = datetime.datetime.now().strftime('%Y-%m-%d')

    # 项目路径下创建log目录保存日志文件
    logpath = os.path.join(os.path.dirname(os.getcwd()), "logs")  # 拼接指定路径
    # 判断目录是否存在,不存在则创建新的目录
    if not os.path.isdir(logpath): os.makedirs(logpath)

    logger.add('%s\%s.log' % (logpath, DATE),
               format="{time:YYYY-MM-DD HH:mm:ss}  | {level}> {elapsed}  | {message}",
               encoding='utf-8',
               retention='1 days',  # 设置历史保留时长
               # rotation="5kb",  # 设置文件大小,rotation="12:00",rotation="1 week"
               backtrace=True,  # 回溯
               diagnose=True,   # 诊断
               enqueue=True)  # 异步写入

    def __new__(cls, *args, **kwargs):
        if not cls.__instance:
            cls.__instance = super(Logings, cls).__new__(cls, *args, **kwargs)
        return cls.__instance

    def info(self, msg, *args, **kwargs):
        return logger.info(msg, *args, **kwargs)

    def debug(self, msg, *args, **kwargs):
        return logger.debug(msg, *args, **kwargs)

    def warning(self, msg, *args, **kwargs):
        return logger.warning(msg, *args, **kwargs)

    def error(self, msg, *args, **kwargs):
        return logger.error(msg, *args, **kwargs)

    def exception(self, msg, *args, exc_info=True, **kwargs):
        return logger.exception(msg, *args, exc_info=True, **kwargs)


if __name__ == '__main__':
    logs = Logings()

    def func(a, b):
        return a/b

    def my(z, c):
        try:
            func(z,c)
        except ZeroDivisionError:
            logs.exception('...........')
    my(5,0)
原文地址:https://www.cnblogs.com/hoyun/p/14004349.html