Skip to main content
 首页 » 编程设计

带有 TimedRotatingFileHandler 后缀的 Python Daily 记录器

2025年05月04日7飞鱼

我是 Python 和编程的新手,我正在尝试制作一个简单的日常记录器。我想使用 TimedRotatingFileHandler 因为它适合我的需要,尽管我不能更改后缀,这很重要。我需要我的日志才能使用“.csv”扩展名。 所以我找到了一个 MyTimedRotatingFileHandler 类,它应该添加后缀,但不幸的是,我不知道我在哪里做错了。

这是我试图实现的代码,由从网络上截取的几个片段组成。

# -*- coding: utf-8 -*- 
import serial 
import os 
import time 
import logging 
from logging.handlers import TimedRotatingFileHandler 
 
ser = serial.Serial('/dev/ttyACM0', 38400, timeout=15) 
 
class MyTimedRotatingFileHandler(logging.handlers.TimedRotatingFileHandler): 
  def __init__(self,dir_log): 
  self.dir_log = dir_log 
  filename =  self.dir_log+time.strftime("%m%d%Y")+".csv" 
  logging.handlers.TimedRotatingFileHandler.__init__(self,filename,  
                        when='S', interval=5, backupCount=0, encoding=None) 
 
def doRollover(self): 
 
   line = ser.readline() 
   self.baseFilename = self.dir_log+time.strftime("%d/%m/%Y %H:%M:%S")+".csv" 
   self.stream = open(self.baseFilename, 'w') 
   self.rolloverAt = self.rolloverAt + self.interval 
   a="%s,%s,%s,%s" % (self.baseFileName,'Température :',line,"\n") 
#a =  "{0},{1},{2},{3}".format(self.baseFileName,'Température :',line,"\n") 
print a  
self.info(a) 
#    logger.flush() 
ser.close() 

请您参考如下方法:

您的缩进似乎不正确,因为 self (在 self.info(a) 中未定义。您应该缩进 doRollOver 以便它是 MyTimedRotatingFileHandler 的一个方法,然后在某处实例化该类,调用该方法并检查 print a 是否按预期工作。