2012-10-23 3 views
2

저는 파이썬과 프로그래밍에 익숙하지 않고 간단한 일일 로거를 만들려고합니다. 접미사를 변경할 수는 없지만 내 요구 사항에 부합하기 때문에 TimedRotatingFileHandler을 사용하고 싶습니다. 중요한 내용입니다. 내 로그에 ".csv"확장자를 사용해야합니다. 그래서 접미사를 추가해야하는 클래스 MyTimedRotatingFileHandler이 발견되었지만 불행히도 실수를 저지르고있는 곳을 얻지는 못합니다.Python TimedRotatingFileHandler에 대한 접미사가있는 일일 로거

다음은 웹에서 가져온 일부 발췌 문장으로 만든 코드입니다. self.info(a)에서 self이 (정의되지 않는

# -*- 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() 

답변

1

귀하의 들여 쓰기, 잘못된 것 같다. 당신이해야 아마 들여 쓰기 doRollOver 그래서 MyTimedRotatingFileHandler의 방법은 다음, 어딘가 그 클래스의 인스턴스 메소드를 호출하고 print a 다음 않는지 예상대로 작동.

관련 문제