Вы можете использовать стандартный модуль регистрации Python:
Ниже приведен пример кода с использованием «TimedRotatingFileHandler» из пакета ведения журнала. По сути, мы создаем обработчик журналирования, который регистрирует файл в течение 30 дней, а затем заменяет его новым файлом. Каждый раз, когда мы используем метод log, логи автоматически попадают в этот файл. Для части pinging мы используем пакет подпроцесса и запускаем команду ping в фоновом режиме для захвата его вывода.
import logging
import time
import subprocess
from logging.handlers import TimedRotatingFileHandler
def ping_host(path, hostname, ping_delay=20):
""""""
logger = logging.getLogger("Rotating Log")
logger.setLevel(logging.INFO)
handler = TimedRotatingFileHandler(path,
when="d",
interval=30,
backupCount=1)
logger.addHandler(handler)
while True:
response = subprocess.Popen(["/bin/ping", "-c1", "-w100",
hostname], stdout=subprocess.PIPE).stdout.read()
logger.info("Ping at {0}, result: {1}".format(time.time(),
response))
time.sleep(ping_delay)
if __name__ == "__main__":
hostname = "google.com"
log_file = "timed_test.log"
ping_host(log_file, hostname)
Когда вы определяете конструктор "TimedRotatingFileHandler", вы можете передавать такие параметры, как:
(путь) путь к файлу журнала с именем
(когда) тип интервала здесь у нас есть «d», что означает «день», другие возможные значения«m», «s», «h»
(интервал) фактический интервал в виде целого числа, мы определили 30 дней
(backupCount) сколько существует копий журналов, если указано более 1, будет сохранено больше файлов журналов
Если вы хотите проверить это в реальном времени, замените «d» на"s" (секунда)
Для выполнения своей работы скрипт должен быть запущен.
Вы можете запустить его в фоновом режиме в оболочке linux:
nohup python3 your_file.py &