Я все еще очень плохо знаком с написанием и / или пониманием Python, но я очень зависим и хотел бы закончить этот проект.Мне удалось собрать этот код на Python из нескольких разных ресурсов, и он в значительной степени делает все, что мне нужно, кроме нескольких элементов.
Основное понимание того, что делает этот код, приведено ниже;
Когда язапусти мой малиновый пи этот код запускается.Код собирает последовательные данные с устройства, управляемого микроконтроллером, с помощью кабеля USB FTDI.Затем данные сохраняются на USB-накопитель и сжимаются, когда журналы достигают определенного размера.
Что я надеялся добавить;
Я хотел быпоследовательные данные, собранные построчно, чтобы добавить обновленную метку времени (дату и время).Я смог заставить это работать.Данные и время отображаются при просмотре из моего окна termainl, но эти же данные не записываются в файл журнала.
Я хотел бы добавить метку времени к имени файлаСразу после сжатия файла я знаю, какой журнал зашел в какой день.
Если кто-то может мне помочь, или если это простое исправление, пожалуйста, помогите.
Очень ценится! *
Адам
[CODESTARTS]
#!/usr/bin/env python
# Import all the needed modules
import logging.handlers
import sys
import time
import gzip
import os
import shutil
import random
import string
import serial
import logging
__version__ = 1.0
__descr__ = "This logic is written keeping in mind UNIX/LINUX/OSX platforms only"
# Create a new class that inherits from RotatingFileHandler. This is where we add the new feature to compress the logs
class CompressedRotatingFileHandler(logging.handlers.RotatingFileHandler):
def doRollover(self):
"""
Do a rollover, as described in __init__().
"""
if self.stream:
self.stream.close()
if self.backupCount > 0:
for i in range(self.backupCount - 1, 0, -1):
sfn = "%s.%d.gz" % (self.baseFilename, i)
dfn = "%s.%d.gz" % (self.baseFilename, i + 1)
if os.path.exists(sfn):
# print "%s -> %s" % (sfn, dfn)
if os.path.exists(dfn):
os.remove(dfn)
os.rename(sfn, dfn)
dfn = self.baseFilename + ".1.gz"
if os.path.exists(dfn):
os.remove(dfn)
# These two lines below are the only new lines. I commented out the os.rename(self.baseFilename, dfn) and
# replaced it with these two lines.
with open(self.baseFilename, 'rb') as f_in, gzip.open(dfn, 'wb') as f_out:
shutil.copyfileobj(f_in, f_out)
# os.rename(self.baseFilename, dfn)
# print "%s -> %s" % (self.baseFilename, dfn)
self.mode = 'w'
self.stream = self._open()
# Specify which file will be used for our logs
log_filename = "/mnt/usbstick/DeviceDebugger/logs/ICORE_log.txt"
#Adding format by editing "basicConfig"
Format = logging.basicConfig(level=logging.DEBUG,
format='%(asctime)-15s %(name)-5s %(levelname)-8s %(message)s')
# Create a logger instance and set the facility level
my_logger = logging.getLogger()
my_logger.setLevel(logging.DEBUG)
# Create a handler using our new class that rotates and compresses {maxbytes and backup count are configurable]
file_handler = CompressedRotatingFileHandler(filename=log_filename, maxBytes=90000, backupCount=10)
# Add all the handlers to the logging instance
my_logger.addHandler(file_handler)
#serial usb dev port and baud rate speed
ser1 = serial.Serial('/dev/ttyUSB0',38400)
while True:
#collect logs that are coming from ser1 to my_logger
my_logger.debug(ser1.readline())
[ЭТО ПРИМЕР КАК ДАННЫЕПОКАЗЫВАЕТСЯ В ФАЙЛЕ СОХРАНЕННОГО ЖУРНАЛА] iAMG-4000 2019-02-18T11: 38: 41
CWebServiceTimeout Тема запущена 339D380
[ЭТО ПРИМЕР КАКДАННЫЕ ПОКАЗЫВАЮТСЯ НА ОКНА ТЕРМИНАЛА] 2019-02-18 11: 38: 43,962 root DEBUG iAMG-4000 2019-02-18T11: 38: 41
2019-02-18 11: 39: 00,300 root DEBUG CWebServiceTimeout Тема запущена 339D380