2

私はPythonとプログラミングに不慣れで、簡単な毎日のロガーを作成しようとしています。TimedRotatingFileHandler接尾辞を変更することはできませんが、自分のニーズに合っているので使いたいです。それは重要なことです。「.csv」拡張子を使用するには、ログが必要になります。だから私は接尾辞を追加する必要があるクラスを見つけましたMyTimedRotatingFileHandlerが、残念ながら、私は間違いをしているところを取得できません。

これが私が達成しようとしているコードであり、Webから取得したいくつかのスニペットで構成されています。

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

1 に答える 1

1

self(inが定義されていないため、インデントが正しくないようself.info(a)です。おそらくインデントdoRollOverして、そのクラスをどこかのメソッドとしてMyTimedRotatingFileHandlerインスタンス化し、そのメソッドを呼び出して、print a期待どおりに機能するかどうかを確認する必要があります。

于 2013-04-02T08:40:06.400 に答える