Backend - 日志记录

目录

1. settings.py 文件设定

2. book_log.py 文件设定

3. view 视图文件调用


1. settings.py 文件设定

文件位置:BookProject 目录下

LOG_PATH = os.path.join(os.getcwd(), 'logs')  # 设定日志文件位置:项目名下的logs文件夹中

2. book_log.py 文件设定

文件位置:BookApp.views.tools 中

理解下方代码的时间线:-----要删除文件的所在时间范围-----mark_day节点-----暂时保留文件的所在时间-----today节点---->

import os
from BookProject.settings import LOG_PATH
from threading import Thread
import logging
import logging.handlers
import datetime
# 生成 logs 文件夹
if not os.path.exists(LOG_PATH):os.mkdir(LOG_PATH)
# 生成 log 文件
log_file_name=os.path.join(LOG_PATH,'{}.log'.format(str(datetime.datetime.now().strftime('%Y-%m-%d'))))  # 项目名\logs\XXXX-XX-XX.log
# log日志的基础配置
logging.basicConfig(handlers=[logging.handlers.TimedRotatingFileHandler(filename=log_file_name, when='D', interval=60*60*24, backupCount=2)],level=logging.DEBUG,format='%(asctime)s  %(message)s'  # 日志内容的展示格式,datefmt='[%Y-%m-%d %H:%M:%S]' # 日志内容的记录时间格式)
# 操作成功的日志记录
def info_threadjob(msg):logging.info(msg)
def log_success(msg):t1 = Thread(target=info_threadjob, args=(msg,))t1.start()
# 操作失败的日志记录
def err_threadjob(msg):logging.exception(msg)
def log_error(msg):t1 = Thread(target=err_threadjob, args=(msg,))t1.start()
# 删除几天前操作的日志文件
def del_logs():day_len = 1 # 天数today = datetime.datetime.now()  # 今天时间prev_day = datetime.timedelta(days=-day_len)  # 前 day_len 天mark_day = today + prev_day  # 前day_len天的具体日期时间节点,2023-01-27 16:29:29.206065res_list = os.listdir(LOG_PATH)  # 日志文件位置列表for r in res_list: # 循环每个日志文件log_file = os.path.join(LOG_PATH, r)file_time = os.path.getmtime(log_file)  # 文件的最后修改时间(注意是文件实实在在有修改的时间,而不是文件内容里的时间,也不是日志文件名上的时间)if datetime.datetime.fromtimestamp(file_time) <= mark_day: # 前者 2021-01-28 16:12:02.148921os.remove(log_file)

3. view 视图文件调用

注意:写入日志的内容,不能有中文

from BookApp.views.tools.book_log import *
log_success("1. start getting data from from_db")  # 记录操作成功讯息
try:del_logs()  # 删除已有日志文件
except Exception as e:log_error("error: {}".format(str(e)))  # 记录操作失败讯息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/719037.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 创建并初始化对象

创建并初始化C对象 当我们创建一个C对象时&#xff0c;它需要占用一些内存&#xff0c;即使我们写一个完全为空的类&#xff0c;类中没有成员&#xff0c;什么也没有&#xff0c;它至少也要占用一个字节的内存。但是我们类中有很多成员&#xff0c;它们需要存储在某地方&#…

【扩散模型】生成模型中的Residual Self-Attention UNet 以及 DDPM的pytorch代码

参考&#xff1a; [1] https://github.com/xiaohu2015/nngen/blob/main/models/diffusion_models/ddpm_cifar10.ipynb [2] https://www.bilibili.com/video/BV1we4y1H7gG/?spm_id_from333.337.search-card.all.click&vd_source9e9b4b6471a6e98c3e756ce7f41eb134 TOC 1 UNe…

视黄酸诱导基因-1敲除诱导树突状细胞的不成熟特性并延长异体移植小鼠的存活时间研究【AbMole】

器官移植是一种用于替换因疾病、损伤或其他原因受损的人体器官的医疗程序。尽管器官移植可以挽救生命并显著提高生活质量&#xff0c;但存在供体器官短缺、排斥反应、器官功能障碍、感染和药物副作用等问题。为了提高移植成功率和受体健康&#xff0c;需要有效的免疫策略。树突…

如何使用支付宝沙箱环境本地配置模拟支付并实现公网远程访问【内网穿透】

文章目录 前言1. 下载当面付demo2. 修改配置文件3. 打包成web服务4. 局域网测试5. 内网穿透6. 测试公网访问7. 配置二级子域名8. 测试使用固定二级子域名访问 前言 在沙箱环境调试支付SDK的时候&#xff0c;往往沙箱环境部署在本地&#xff0c;局限性大&#xff0c;在沙箱环境…

原理篇-- 定时任务xxl-job-服务端(admin)项目启动过程--JobFailMonitorHelper初始化 (5)

文章目录 前言一、JobFailMonitorHelper作用&#xff1a;二、JobFailMonitorHelper源码内容&#xff1a;2.1 start() 初始化2.1.1 任务失败重试:2.1.2 任务失败告警信息发送:2.1.2.1 JobAlarmer 告警类&#xff1a;2.1.2.2 alarm 告警信息发送&#xff1a; 2.2 toStop() 终止线…

数据可视化原理-腾讯-3D网格热力图

在做数据分析类的产品功能设计时&#xff0c;经常用到可视化方式&#xff0c;挖掘数据价值&#xff0c;表达数据的内在规律与特征展示给客户。 可是作为一个产品经理&#xff0c;&#xff08;1&#xff09;如果不能够掌握各类可视化图形的含义&#xff0c;就不知道哪类数据该用…

壁炉火焰温和而宁静,警惕火焰凶猛的潜在危害

在寒冷的冬夜&#xff0c;壁炉散发的温暖和闪烁的火焰成为家庭的心灵港湾。然而&#xff0c;我们在享受壁炉带来的温馨时&#xff0c;有时候也要关注火焰的凶猛度&#xff0c;因为它可能引发一系列潜在危害。 首先&#xff0c;壁炉的火焰过于凶猛可能导致空气质量下降。当火焰过…

从零开始手写RPC框架(4)

这一节主要讲述网络传输模块的代码&#xff0c;并且几乎每一行代码都加上了我个人理解的注释&#xff0c;同时也讲述了其中一些以前没见过的函数&#xff0c;和大致的底层运行逻辑。 目录 网络传输实体类网络传输实现基于Socket实现网络传输基于Netty实现网络传输客户端服务端 …

【JavaEE进阶】 Linux常用命令

文章目录 &#x1f343;前言&#x1f334;ls 与 pwd&#x1f6a9;ls&#x1f6a9;pwd &#x1f38d;cd&#x1f6a9;认识Linux目录结构 &#x1f340;touch与cat&#x1f6a9;touch&#x1f6a9;cat &#x1f332;mkdir与rm&#x1f6a9;mkdir&#x1f6a9;rm &#x1f384;cp与…

GD库没有安装FreeType 支持Call to undefined function App\Services\imagettfbbox()

GD库是一个功能强大的图像处理库&#xff0c;广泛用于生成和处理图像。然而&#xff0c;默认情况下&#xff0c;GD库不包含FreeType扩展&#xff0c;该扩展用于处理字体和文本。如果您需要在GD库中使用更多的字体和文本效果&#xff0c;您可以按照以下步骤安装和启用FreeType扩…

十五、单词造句

描述 GG Bond在和妹妹做一个游戏&#xff0c;GG Bond给定了妹妹一些单词字符串&#xff0c;他想让妹妹把这些单词拼接成以空格间隔开的句子&#xff0c;很可惜妹妹Python没有学好&#xff0c;你能使用join函数帮帮她吗&#xff1f; 输入描述&#xff1a; 多行输入多个字符串…

Java基础 - 7 - 常用API(二)

API&#xff08;全称 Application Programming Interface&#xff1a;应用程序编程接口&#xff09; API就是Java帮我们已经写好的一些程序&#xff0c;如类、方法等&#xff0c;可以直接拿过来用 JDK8 API文档&#xff1a;Java Platform SE 8 一. Object Object类的作用 Ob…

mybatis多数据源切换

1.前提 项目中有可能需要去其他的数据库取其他的表的信息 2.思路 2.1 直接使用原生jdbc&#xff08;不推荐&#xff09; 2.2 不使用我们全局配置的mybatis&#xff0c;对指定文件夹下使用我们指定的Session 3.解决办法 指定该配置的范围 package com.maycur.openapi.dao.my…

『Linux从入门到精通』第 ㉓ 期 - 管道

文章目录 &#x1f490;专栏导读&#x1f490;文章导读&#x1f427;进程间通信的目的&#x1f427;如何进行进程间通信&#x1f427;进程间通信的分类&#x1f427;管道&#x1f426;什么是管道&#x1f426;管道原理 &#x1f427;实例代码&#x1f427;管道的特点&#x1f4…

Protobuf学习笔记以及序列化的一些概念要点(暂放C++笔记专栏)

Protobuf学习笔记以及序列化的一些概念要点 —— 杭州 2024-03-03 文章目录 Protobuf学习笔记以及序列化的一些概念要点1.Protobuf概念2.实际测试2.1.准备一个test.proto2.2.使用 protoc 命令行工具来编译一个 Protocol Buffers 文件 test.proto3.3.创建一个main.cpp写C++代码…

mysql 事务的隔离级别

一、事务的隔离级别要解决的问题&#xff1a; 1&#xff09;脏读&#xff1a;读到了其它事务未提交的数据即脏读&#xff0c;未提交意味着数据有可能会被回滚&#xff0c;也就是最终有可能不会存储到数据库中&#xff0c;即读到了最终不一定存在存在的数据&#xff0c;即为脏读…

如何选择程序员职业赛道:挑战与机遇并存的职业探索指南

程序员如何选择职业赛道&#xff1f; 作为程序员&#xff0c;选择职业赛道是一项重要的决策&#xff0c;不仅影响你的职业发展&#xff0c;也影响着你的工作生活。本文将为你介绍如何选择程序员职业赛道&#xff0c;以及每个方向的特点、挑战和机遇&#xff0c;帮助你做出明智…

《极客时间 - 左耳听风》【文章笔记 + 个人思考】

《极客时间 - 左耳听风》 原文链接 &#xff1a;https://time.geekbang.org/column/intro/100002201?tabcatalog 备注&#xff1a;加粗部分为个人思考 01 | 程序员如何用技术变现&#xff1f;&#xff08;上&#xff09; 备注&#xff1a;加粗部分为个人思考) 01 | 程序员如何…

Window系统部署Splunk Enterprise并结合内网穿透实现远程访问本地服务

文章目录 前言1. 搭建Splunk Enterprise2. windows 安装 cpolar3. 创建Splunk Enterprise公网访问地址4. 远程访问Splunk Enterprise服务5. 固定远程地址 前言 本文主要介绍如何简单几步&#xff0c;结合cpolar内网穿透工具实现随时随地在任意浏览器&#xff0c;远程访问在本地…

【24最新版PythonPycharm安装教程】小白保姆级别安装教程

今天&#xff0c;我就来教大家一下&#xff0c;如何去安装Python&#xff01; 需要博主打包好的一键激活版Pycharm&&Python也可扫下方直接获取 ​ 1 了解Python Python是一种面向对象的解释型计算机程序设计语言&#xff0c;由荷兰人Guido van Rossum于1989年发明&…