Серийный Проект Коллекционера Отладчика - PullRequest
0 голосов
/ 17 февраля 2019

Я все еще очень плохо знаком с написанием и / или пониманием Python, но я очень зависим и хотел бы закончить этот проект.Мне удалось собрать этот код на Python из нескольких разных ресурсов, и он в значительной степени делает все, что мне нужно, кроме нескольких элементов.

Основное понимание того, что делает этот код, приведено ниже;

Когда язапусти мой малиновый пи этот код запускается.Код собирает последовательные данные с устройства, управляемого микроконтроллером, с помощью кабеля USB FTDI.Затем данные сохраняются на USB-накопитель и сжимаются, когда журналы достигают определенного размера.

Что я надеялся добавить;

  1. Я хотел быпоследовательные данные, собранные построчно, чтобы добавить обновленную метку времени (дату и время).Я смог заставить это работать.Данные и время отображаются при просмотре из моего окна termainl, но эти же данные не записываются в файл журнала.

  2. Я хотел бы добавить метку времени к имени файлаСразу после сжатия файла я знаю, какой журнал зашел в какой день.

Если кто-то может мне помочь, или если это простое исправление, пожалуйста, помогите.

Очень ценится! *

Адам

[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

...