#===============改进成最大大小的日志: import logging as logging1 import os import os.path import logging as logging1 class SizeLimitedFileHandler(logging1.FileHandler): """ 自定义日志处理器:当日志文件超过指定大小,自动清空后重新写入 """ def __init__(self, filename, max_size=10*1024*1024, mode='a+', encoding='utf-8'): """ :param filename: 日志文件名 :param max_size: 日志文件最大字节数(默认10MB) :param mode: 写入模式 :param encoding: 编码格式 """ self.max_size = max_size super().__init__(filename, mode=mode, encoding=encoding) def emit(self, record): """重写emit方法,写入前检查文件大小""" # 检查文件是否存在且超过最大大小 if os.path.exists(self.baseFilename) and os.path.getsize(self.baseFilename) > self.max_size: # 清空文件内容(以w模式打开再关闭) with open(self.baseFilename, 'w', encoding=self.encoding): pass # 重置文件指针 self.stream = self._open() # 执行原始的日志写入逻辑 super().emit(record) # 配置日志(自动清空版) def setup_clear_logger(max_size=10*1024*1024): # 默认10MB """ 配置日志:超过指定大小自动清空 :param max_size: 日志文件最大字节数(例如:10*1024*1024 = 10MB) """ # 1. 创建日志器 logger = logging1.getLogger() logger.setLevel(logging1.INFO) logger.handlers.clear() # 清空默认处理器 # 2. 配置日志格式(保留你的原有格式) formatter = logging1.Formatter( '%(asctime)s %(name)s [%(pathname)s line:%(lineno)d] %(levelname)s %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) # 3. 使用自定义的大小限制处理器(自动清空) file_handler = SizeLimitedFileHandler( filename='log.txt', max_size=max_size, # 设置最大大小 mode='a+', encoding='utf-8' ) file_handler.setFormatter(formatter) logger.addHandler(file_handler) # 4. 禁用指定模块的INFO日志 logging1.getLogger('httpx').setLevel(logging1.WARNING) logging1.getLogger('openai').setLevel(logging1.WARNING) # 初始化日志(设置最大大小为10MB,超过则清空) # 如果想按行数估算:1万行≈1MB(按每行100字节),则10万行≈10MB setup_clear_logger(max_size=10*1024*1024) # 10MB logging1.info('这是一条info日志')python 日志自动最大10mb的写法
张小明
前端开发工程师
VibeCoding小白必读,从「单间工作室」到「全球城市」#系统扩展的7个软件架构阶段
Shadow:设计师学习Vibe Coding,对软件所要服务的用户规模和架构特点没有很清晰的认知。以下是我用AI整理的0基础架构知识。(技术科普 设计学比喻,0基础秒懂)💡 核心心法:先跑通业务,…
【Dubbo服务找不到?从抓耳挠腮到一键解决,全流程干货!】
作为一名天天和BUG贴贴的程序员,排查问题就像拆盲盒——你永远不知道下一个坑是逻辑bug、环境搞怪,还是同事偷偷改的配置让你当场破防。而最让人崩溃的,当属Dubbo服务找不到的坑!就像你约了朋友吃饭,到地方发现人没影&…
【netty】EventLoop
eventloop 可以处理channel上 accept、read、write等io事件1.单线程执行器2.维护了一个selector如果传入线程数,则使用传入的线程数如果没有传入线程数,则获取配置的线程数 与 系统的cpu核数*2 比大小防。 止存在0线程的情况,所以与1比大小&a…
GLM-4.7-Flash参数详解:flash-attn2启用条件、量化选项与推理精度权衡
GLM-4.7-Flash参数详解:flash-attn2启用条件、量化选项与推理精度权衡 1. 模型基础认知:不只是“更快的GLM-4” 你可能已经听说过GLM-4系列,但GLM-4.7-Flash不是简单的小版本迭代。它是一次面向实际部署场景的深度重构——目标很明确&#…
GLM-4-9B-Chat-1M代码补全:vLLM支持的IDE插件开发
GLM-4-9B-Chat-1M代码补全:vLLM支持的IDE插件开发 1. 引言 作为一名长期在AI和智能硬件领域工作的工程师,我经常需要处理复杂的代码项目。最近在开发一个大型Python项目时,遇到了一个典型问题:当代码文件超过几千行后࿰…
阿里达摩院发布具身智能大脑基础模型 RynnBrain:首次赋予机器人时空记忆与物理推理能力
2026年2月10日,阿里巴巴达摩院正式发布其自主研发的具身智能基础模型 RynnBrain,并同步开源包含 30B MoE 架构模型在内的7个全系列模型,以及全新评测基准 RynnBrain-Bench。这一发布标志着具身智能从“动作执行”迈向“认知理解”的关键一步。…