重庆微信网站建设,网站平台网站怎么做,wordpress查询功能,wordpress 类似divi的前提#xff1a;
之前python文件输出日志到文件的时候#xff0c;使用logging模块#xff0c;发现特别麻烦#xff0c;需要文件日期切分#xff0c;异步打印日志#xff0c;文件留存时间#xff0c;这些功能的实现就很麻烦#xff0c;都需要自己写#xff0c;之后发现…前提
之前python文件输出日志到文件的时候使用logging模块发现特别麻烦需要文件日期切分异步打印日志文件留存时间这些功能的实现就很麻烦都需要自己写之后发现有loguru第三方库觉得使用很方便代码量很少可用性极高 代码模块
base_log.py 日志输出文件封装class
# # -*- coding: utf-8 -*-
import requests
from pathlib import Path
import os, sys
from loguru import logger as log
from threading import Thread
BASE_LOG_DIR Path(__file__).resolve().parent.parentdef async_new(f):def wrapper(*args, **kwargs):thr Thread(targetf, argsargs, kwargskwargs)thr.start()thr.join(timeout2)return wrapperasync_new
def push_report(web_hook, msg):发送消息给飞书机器人:param web_hook: 机器人api:param msg: 要发送的消息:return:header {Content-Type: application/json;charsetUTF-8}message_body {msg_type: text,content: {text: msg}}requests.post(urlweb_hook, jsonmessage_body, headersheader)#rotation参数 50 MB(设置日志文件大小) 00:00(每天凌晨创建一个新文件) 1 week(一周创建一个日志文件)
#retention参数 10 days(日志文件最长保留10天)
rotation, retention 00:00, 7 daysclass Logger(object):__instance Nonedef __new__(cls, *args, **kwargs):if not cls.__instance:cls.__instance super(Logger, cls).__new__(cls)return cls.__instancedef __init__(self, file_name):self.logger logself.logger.add(os.path.join(BASE_LOG_DIR, flogs/{file_name}_info.log),format{time:YYYY-MM-DD HH:mm:ss} | {level} | {file.path} | {module} | {function} | {line} | {message},levelINFO, rotationrotation, retentionretention, enqueueTrue, encodingutf-8)self.logger.add(os.path.join(BASE_LOG_DIR, flogs/{file_name}_error.log),format{time:YYYY-MM-DD HH:mm:ss} | {level} | {file.path} | {module} | {function} | {line} | {message},levelERROR, rotationrotation, retentionretention, enqueueTrue, encodingutf-8)self.logger.add(sys.stderr, filterself.loguru_feishu_hook)def loguru_feishu_hook(self, record):if web_hook : record[extra].get(feishu_web_hook, None):push_report(web_hook, record.get(message))#如果对record做修改的话可以return, 但是return后终端会打印两次日志文件中纸打印一次# return record
调用base_log.py代码范例
import os, sys
from base_log import Logger
logger Logger(os.path.basename(sys.argv[0]).split(.)[0]).loggerdef ceshi():#打印日志且发送警报# logger.info(fjwioejwoejoifwjoi, feishu_web_hookhttps://open.feishu.cn/****)#仅打印日志logger.info(通知fjwioejwoejoifwjoi4444444)if __name__ __main__:ceshi()