当前位置:网站首页>V01 - XX,记录美好生活从日志开始
V01 - XX,记录美好生活从日志开始
2022-07-26 11:45:00 【呀丶胖企鹅】
系列文章目录
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")
边栏推荐
- MICCAI2022论文 | 进化多目标架构搜索框架:在COVID-19三维CT分类中的应用
- Metauniverse gamefi chain game system development NFT Technology
- Audio and video+
- pytest接口自动化测试框架 | pytest获取执行数据、pytest禁用插件
- 系统调用捕获和分析—Ring0层kprobe劫持系统调用
- Database composition storage engine
- X 2 earn must rely on Ponzi startup? Where is the way out for gamefi? (top)
- Marriage seeking story
- 最新心形拼图小程序源码+带流量主
- 建模杂谈系列151 SCLC工程化实验4-SCLC对象
猜你喜欢

Sword finger offer 25. merge two sorted linked lists

Talking about web vitals

大咖观点+500强案例,软件团队应该这样提升研发效能!

Hal library IIC simulation in punctual atom STM32 `define SDA_ IN() {GPIOB->MODER&=~(3<<(9*2));GPIOB->MODER|=0<<9*2;}` // PB9 input mode

忆凤姐

Yuancosmos daily | yuancosmos social app "Party Island" product off the shelves; Guangzhou Nansha yuanuniverse industrial agglomeration zone was unveiled; The inter ministerial joint conference system

【附下载】一款强大的Web自动化漏洞扫描工具——Xray

3.2 创建菜单与游戏页面(下)

Metauniverse gamefi chain game system development NFT Technology

系统调用捕获和分析完结篇制作系统调用日志收集系统
随机推荐
[cloud resident co creation] decrypt how sparkrtc realizes ultra-low latency interaction globally
滴滴被罚80亿!拿用户数据赚钱的时代结束了
微服务化解决文库下载业务问题实践
Database composition storage engine
[early knowledge of activities] list of recent activities of livevideostack
Modeling essay series 150 SCLC engineering experiment 3-srule
Sunflower senior product director technology sharing: how to apply in AD domain environment
Pytoch -- error based on mmseg/mmdet training: runtimeerror: expected to have finished reduction in the priority iteration
Question and answer No. 48: geek appointment - construction path of observable system
数据数据湖(十九):SQL API 读取Kafka数据实时写入Iceberg表
武林头条-建站小能手争霸赛
Programmer growth chapter 28: how can managers not do it by themselves?
【通信原理】第一章 -- 绪论
初试YOLOv7
Can you believe it? It took me only two days to develop a management system
数据库组成索引和约束
数据库组成存储引擎
Exploration on cache design optimization of community like business
一些实用、常用、效率越来越高的 Kubernetes 别名
System call capture and analysis conclusion making system call log collection system