python日志库

更新时间:2023-03-10

官方提供的logging

封装成以日期命名。

参考:
logging和loguru

logging

封装类使用

import os
import logging
import re
import time
from logging.handlers import TimedRotatingFileHandler

# logs path default:/logs/
class setup_log:
    def __init__(self):
        if not os.path.exists("logs"):
            os.makedirs("logs")

        logger = logging.getLogger()
        # 禁用某部分日志记录输出
        # logging.disable(logging.DEBUG)
        # 禁止日志输出
        logger.disabled = False
        # 设置日志记录等级
        logger.setLevel(logging.DEBUG)

        # interval 滚动周期,
        # when="MIDNIGHT", interval=1 表示每天0点为更新点,每天生成一个文件
        # backupCount  表示日志保存个数
        file_handler = TimedRotatingFileHandler(
            filename="logs/"+time.strftime("%Y-%m-%d.log", time.localtime()), when="MIDNIGHT", interval=1, backupCount=30,
            encoding='utf-8'
        )
        # filename="mylog" suffix设置,会生成文件名为mylog.2020-02-25.log
        file_handler.suffix = "%Y-%m-%d.log"
        # extMatch是编译好正则表达式,用于匹配日志文件名后缀
        # 需要注意的是suffix和extMatch一定要匹配的上,如果不匹配,过期日志不会被删除。
        file_handler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}.log$")

        # 定义日志输出格式
        file_handler.setFormatter(
            logging.Formatter(
                "%(asctime)s|%(levelname)s|%(filename)s:%(lineno)s|%(message)s"
            )
        )
        logger.addHandler(file_handler)
        self.logger = logger

    def __new__(cls, *args, **kw):
        if not hasattr(cls, '_instance'):
            cls._instance = object.__new__(cls)
        return cls._instance

    def return_logger(self):
        return self.logger


使用方式:

# 直接加载使用方式
# from loggingCfg import setup_log
# logger = setup_log().return_logger()
# logger.debug("姓名")
# logger.info("姓名")
# logger.warning("姓名")
# logger.error("姓名")
# logger.critical("姓名")

加载本地配置文件使用

#./logging.conf
 
# logger object default:root
[loggers]
keys=root,applog
 
#Set Processor Type
[handlers]
keys=consoleHandler
 
#Format Object List
[formatters]
keys=simpleFormatter
 
#Set the level and type of logger root
[logger_root]
level=DEBUG
handlers=consoleHandler
 
#Set the level and type of logger applog
[logger_applog]
level=DEBUG 
handlers=consoleHandler
qualname = applog
propagate=0
 
#set consoleHandler
[handler_consoleHandler]
class=StreamHandler
args=(sys.stdout,)
level=DEBUG
formatter=simpleFormatter
 
 #set fileHandler
#[handler_fileHandler]
#class=handlers.TimedRotatingFileHandler
#class=FileHandler
#args=(datetime.now().strftime('%Y_%m_%d.log'), 'a')
#level=DEBUG
#formatter=simpleFormatter
 
[formatter_simpleFormatter]
format=%(asctime)s|%(levelname)s|%(filename)s:%(lineno)s|%(message)s
datefmt=%Y-%m-%d %H:%M:%S

使用方式:
配置文件的方式比较麻烦,要重新设置一下才能以日期命名

# # 加载配置文件方式
# import logging.config
# from datetime import datetime
#
# logging.config.fileConfig('logging.conf')
# logger = logging.getLogger('applog')
# fh = logging.FileHandler('{:%Y-%m-%d}.log'.format(datetime.now()))
# formatter = logging.Formatter("%(asctime)s|%(levelname)s|%(filename)s:%(lineno)s|%(message)s")
# fh.setFormatter(formatter)
# logger.addHandler(fh)
#
# logger.debug("123")

国内大佬做的日志库nb_log

github地址:https://github.com/ydf0509/nb_log

优点:可从输出跳转到代码文件。日志根据等级区分颜色。在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值