Регистрация вывода терминала Linux в файлы по дате? - PullRequest
0 голосов
/ 11 января 2019

Я заинтересован в создании или использовании метода для записи всего вывода терминала из моего скрипта python в файл журнала, но я хотел бы, чтобы журналы автоматически запускали новый файл в начале каждого нового дня. До сих пор я знаю, что могу написать сценарий оболочки, чтобы сделать что-то вроде:

script test.txt 
python -yourscriptnamehere-

Однако мне интересно, чтобы этот сценарий стал чем-то, что может завершить запись сценария и начать новую запись в новый день с новым именем файла, предпочтительно с датой в качестве имени журнала.

Это выполнимо, и если да, то куда я пойду отсюда?

Примечание: причина, по которой я не просто записываю все свои распечатки в файл в скрипте python, заключается в том, что я использую библиотеку журналов для получения отладочной информации о моем соединении с сервером, и у меня, похоже, нет контроль над этим процессом.

1 Ответ

0 голосов
/ 15 января 2019

Цель: записать все выходные данные терминала из сценария в файл журнала, используя python.

Решение: Перед регистрацией проверьте текущую дату, и если сегодняшний файл существует, напишите туда, а если нет, создайте его.

import time    
import sys
import os
import subprocess

logDir = "log/"        //Create a log dir beforehand
p = subprocess.Popen("[script you want to log]", stdout=subprocess.PIPE)  //Specify the script you want to log
while 1:
  line = p.stdout.readline() // read stdout line by line
  today = time.strftime("%d-%m-%Y") // get today's date
  filePath = logDir + today // file path as log dir + today's date
  if os.path.isfile(filePath): // if file exists
    with open(filePath, "a") as logFile: write at the end of the file
      logFile.write(line)
  else:    // if file does not exist
    logFile = open(filePath, "w") // create a new file 
    logFile.write(line) // write
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...