bei meinem Script benutze ich das logging modul - welches auch wunderbar funktioniert.
Das Problem ist - die SD Karte auf welche die logs gespeichert werden - wird immer gefüllt.
Befehl: df -h wird bei /mnt/sd0 - 1,1GB angezeigt
Befehl: du sind es ca. 140MB
Wenn ich die SD Karte formatiere beginnat es auch wieder die Karte von vorne zu befüllen.
Meine Befürchtung liegt beim logging modul - da dies das einzige ist das auf die Karte schreibt.
Ich benötige ein Class um die Formatter Texte zu setzen:
Code: Alles auswählen
class ContextFilter(logging.Filter):
def filter(self, record):
# date
record.softwareversion = data.softwareversion
record.id = data.id
record.channelnumber = channelnumber
#type
# value
record.channeltype = ch_setup.get(ch, 'type')
record.unit_act = ch_setup.get(ch, 'unit_act')
record.unit_count = ch_setup.get(ch, 'unit_count')
record.name1 = ch_setup.get(ch, 'name1')
record.name2 = ch_setup.get(ch, 'name2')
record.name3 = ch_setup.get(ch, 'name3')
record.name4 = ch_setup.get(ch, 'name4')
record.name5 = ch_setup.get(ch, 'name5')
record.geo_lat = ch_setup.get(ch, 'geo_lat')
record.geo_long = ch_setup.get(ch, 'geo_long')
return True
Code: Alles auswählen
channel_logger_count = logging.getLogger('ch'+channelnumber+'_c')
channel_logger_count.addFilter(ContextFilter())
channel_logger_count.setLevel(logging.INFO)
formatter_count = logging.Formatter('%(asctime)s;%(softwareversion)s;%(id)s;%(channelnumber)s;s0dc;%(message)s;%(channeltype)s;%(unit_count)s;%(name1)s;%(name2)s;%(name3)s;%(name4)s;%(name5)s;%(geo_lat)s;%(geo_long)s')
logHandler_count = handlers.RotatingFileHandler('/mnt/sd0/logs/' + (ch) + '_c.log', maxBytes=5000000, backupCount=10)
logHandler_count.setFormatter(formatter_count)
logHandler_count.setLevel(logging.INFO)
channel_logger_count.addHandler(logHandler_count)
Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt