当前位置: 首页 > article >正文

flask logger 使用 TimedRotatingFileHandler 报错 PermissionError 另一个程序正在使用此文件

重写 doRollover 方法:
继承 TimedRotatingFileHandler 并重写 doRollover 方法,以确保在文件重命名之前检查目标文件是否存在,如果存在,则不执行重命名操作。这可以避免多进程同时尝试重命名同一个文件的问题。

import os
import time
from logging.handlers import TimedRotatingFileHandler

class CustomTimedRotatingFileHandler(TimedRotatingFileHandler):
    def doRollover(self):
        if self.stream:
            self.stream.close()
            self.stream = None
        currentTime = int(time.time())
        dstNow = time.localtime(currentTime)[-1]
        t = self.rolloverAt - self.interval
        if self.utc:
            timeTuple = time.gmtime(t)
        else:
            timeTuple = time.localtime(t)
            dstThen = timeTuple[-1]
            if dstNow != dstThen:
                if dstNow:
                    pass
                else:
                    pass
        dfn = self.rotation_filename(self.baseFilename + ".")
        if not os.path.exists(dfn):
            self.rotate(self.baseFilename, dfn)
        if self.backupCount > 0:
            for s in self.getFilesToDelete():
                os.remove(s)
        if not self.delay:
            self.stream = self._open()
        newRolloverAt = self.computeRollover(currentTime)
        while newRolloverAt <= currentTime:
            newRolloverAt = newRolloverAt + self.interval
        self.rolloverAt = newRolloverAt

http://www.kler.cn/a/390134.html

相关文章:

  • 人脸识别技术:从算法到深度学习的全面解析
  • 基于promtail+loki+grafana搭建日志系统
  • 欧国联的规则,你都了解吗?
  • Elasticsearch(ES)简介
  • mysql 更改 字段长度
  • 【C++】详解RAII思想与智能指针
  • NVR录像机汇聚管理EasyNVR多品牌NVR管理工具/设备:大华IPC摄像头局域网访问异常解决办法
  • 哪家云服务器好跑AI?瞄准AutoDL(附NVIDIA GPU 算力排名表)
  • Linux基础之病毒编写
  • Docker 操作指令
  • 如何设置el-date-picker的默认截止时间为“23:59:59”
  • 故事121
  • Ceph MDS高可用架构探索:从零到一构建多主一备MDS服务
  • (Go基础)Go的运行流程步骤与包的概念
  • 使用docker方式进行Oracle数据库的物理迁移(helowin/oracle_11g)
  • 【Linux系列】 环境配置文件合并的艺术:从`.env`到`.env.combined`
  • Radix Sorts
  • 音视频入门基础:FLV专题(25)——通过FFprobe显示FLV文件每个packet的信息
  • LeetCode每日一题3258---统计满足 K 约束的子字符串数量 I
  • pycharm连接oracle数据库查询数据
  • C# 多线程编程
  • 文本语义分块、RAG 系统的分块难题:小型语言模型如何找到最佳断点
  • Spring Boot框架下编程训练系统开发指南
  • 【Docker】Mac安装Docker Desktop导致磁盘剩余空间较少问题如何解决?
  • Spring Cloud Alibaba Spring Cloud Spring Boot JDK 版本依赖关系
  • jQuery UI 使用