V01 - XX,记录美好生活从日志开始

系列文章目录

V1.0 自动化基础模块搭建


Tools\vlog.py

日志工具

该功能主要是针对本地运行过程中需要使用的文件

Python 版本:3.10.5

代码检查工具、风格:PEP 8、pylint

编辑器:Vscode

注释文案:这里特别提示一下,我偏向于无注释代码,所以,很多时候,变量名、方法名、文件名、类名都是注释,当然由于英文水平不怎么好,什么动词、名词、形容词啥的容易混淆,能理解就好了。

仓库传送门

使用方式

日志功能的使用方式还是比较简单的

Vlog = Vlog().vlog.info("需要输出的内容")

日志的好处

其实对于日志这个工具来说,很多人觉得比较麻烦,有些时候更觉得可能 print 更方便一些,其实在我眼里不然

我认为日志工具,他的作用不仅限于日志的输出和保存,以下简单列一些:

  • 可以做为注释进行代码行为的描述
  • 因为是代码的一部分,不会像注释一样,代码改了,注释没改,导致注释和代码逻辑有所差距
  • 可以在过程中查看到从代码执行到最后结束所消耗的时间,换个角度来说,代码的性能可以得到记录
  • 保存内容,历史原因是最难追溯的,所以可记录下来的内容就可以协助你进行考古
  • 等等...

当然,最后还是要看大家是否需要日志,至少我认为日志是一个base工具,还是非常实在的

下面就直接上代码了,不去多说了

"""日志工具:
本工具主要是针对本地文件运行的过程中,进行日志输出
根据自己的需要,可以进行日志等级的调整
"""
import os
import time
import logging
from logging import handlers


class Vlog():

    """_summary_ 日志功能, 实例化后, 调用 "vlog" 即可选择不同的打印类型
    当前输出格式为: 时间(精确到毫秒) - 文件名 <行数> - 模块名称 -> 日志详情
    使用格式举个栗子: Vlog = Vlog().vlog.info("需要输出的内容")
    """

    DIR_LOGS = "_logs"
    LOG_FOLDERS_NAME = "%Y_%m_%d"
    LOG_FILES_NAME = "%Y_%m_%d-%H_%M_%S"

    THIS_FILE_PATH = os.path.dirname(__file__)
    PROJECT_FOLDER_PATH = os.path.dirname(THIS_FILE_PATH)
    LOGS_FOLDER_PATH = os.sep.join([PROJECT_FOLDER_PATH, DIR_LOGS])

    LEVEL_RELAIONS = {'debug': logging.DEBUG,
                      'info': logging.INFO,
                      'warning': logging.WARNING,
                      'error': logging.ERROR,
                      'critical': logging.CRITICAL}


    def __init__(self, level: str = 'info') -> None:
        name_for_per_min_log_files = time.strftime(self.LOG_FILES_NAME, time.localtime())
        name_for_per_day_log_folders = name_for_per_min_log_files.split("-")[0]

        per_day_log_folders_path = os.sep.join([self.LOGS_FOLDER_PATH,
                                                name_for_per_day_log_folders])

        if not os.path.exists(per_day_log_folders_path):
            os.makedirs(per_day_log_folders_path)
        else:
            pass

        per_min_logs_save_name = os.sep.join([per_day_log_folders_path,
                                              f"{ name_for_per_min_log_files }.log"])
        self.vlog = logging.getLogger(per_min_logs_save_name)

        formatter = "[%(levelname)s] - [%(asctime)s] - [%(filename)s <%(lineno)d>] -> %(message)s"
        set_formatter_to_logging = logging.Formatter(formatter)

        self.vlog.setLevel(self.LEVEL_RELAIONS.get(level))
        terminal_visitor = logging.StreamHandler()
        terminal_visitor.setFormatter(set_formatter_to_logging)
        self.vlog.addHandler(terminal_visitor)

        log_saver = handlers.RotatingFileHandler(filename=per_min_logs_save_name,
                                                 mode="a", maxBytes=1024*1000,
                                                 backupCount=5, encoding='utf-8')
        log_saver.setFormatter(set_formatter_to_logging)
        self.vlog.addHandler(log_saver)


if __name__ == '__main__':
    vlog = Vlog().vlog
    vlog.debug("这是 vlog 模块测试内容1")
    vlog.info("这是 vlog 模块测试内容2")
    vlog.warning("这是 vlog 模块测试内容3")
    vlog.error("这是 vlog 模块测试内容4")
    vlog.critical("这是 vlog 模块测试内容5")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呀丶胖企鹅

感谢老板的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值