目錄
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))) ?# 記錄操作失敗訊息