简单好用的python日志类的定义及引用

python 日志类的编写

对于初学者的小白来说,定位问题并解决是至关重要的,在项目里打印日志能方便快速的定位问题。我带来的是非常简单的日志类定义,网上的日志类虽然很多,但是如何调用有一些缺失。接下来遍上代码边解释

import logging
import os
from datetime import datetime
import concurrent.futures


class Logger:
    """日志类"""
    def __init__(self, path, clevel=logging.DEBUG, flevel=logging.DEBUG):
        self.logger = logging.getLogger(path)
        self.logger.setLevel(logging.DEBUG)
        fmt = logging.Formatter('[%(asctime)s] [%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S')
        # 设置 CMD 日志
        sh = logging.StreamHandler()
        sh.setFormatter(fmt)
        sh.setLevel(clevel)
        # 设置文件日志
        fh = logging.FileHandler(path)
        fh.setFormatter(fmt)
        fh.setLevel(flevel)
        self.logger.addHandler(sh)
        self.logger.addHandler(fh)

        self.executor = concurrent.futures.ThreadPoolExecutor(max_workers=1)

    def debug(self, message, *args):
        
        self.executor.submit(self.logger.debug, message, *args)
 
    def info(self, message, *args):
        
        self.executor.submit(self.logger.info, message, *args)

    def warning(self, message, *args):
        
        self.executor.submit(self.logger.warn, message, *args)

    def error(self, message, *args):
        
        self.executor.submit(self.logger.error, message, *args)

    def critical(self, message, *args):
        
        self.executor.submit(self.logger.critical, message, *args)


def loggers(LOG_FILE):
    t = datetime.now().strftime("%Y-%m-%d_%H")
    LOG_FILE = LOG_FILE+r"\scan-engine@{}.log".format(t)
    CMD_LOG_LEVEL = os.environ.get("CMD_LOG_LEVEL", logging.DEBUG)
    FILE_LOG_LEVEL = os.environ.get("FILE_LOG_LEVEL", logging.DEBUG)
    logger = Logger(LOG_FILE, CMD_LOG_LEVEL, FILE_LOG_LEVEL)
    return logger

使用上面的代码单独放在utils/logger.py中,设置好路径,在实际应用项目中引用。
如下:
from utils.logger import loggers
logger = loggers("放置日志的文件夹")
logger.info("要记录的信息")
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值