Проблема с регистратором python3 и logrotate - PullRequest
0 голосов
/ 05 ноября 2018

У меня проблема с модулем регистрации в Python 3 и logrotate.

Моя программа на Python входит в файл журнала, и как только logrotate создает файл .log.1.gz, создается новый файл .log, но в него больше ничего не записывается. Это пустой файл до перезапуска службы. (он работает как сервис systemd, Type = simple)

Это версии:

Python 3.5.3

Debian 9.5 (Univention 4.3-2)

Logrotate 3.11.0-0.1

Конфигурация logrotate:

/var/log/contactsyncpython.log {
rotate 12
daily
compress
missingok
notifempty
}

Это код основной программы python. Модуль sync_main сделан мной и не включен.

Кто-нибудь знает, что может вызвать проблему?

Спасибо за чтение, Roland.

import daemon
import lockfile
import signal
import logging

import sync_main

pidfile = '/var/run/contactsyncpython.pid'
locfile = '/var/run/contactsyncpython.pid.lock'
logfile = '/var/log/contactsyncpython.log'

context = daemon.DaemonContext(working_directory='/tmp/',
                               pidfile=lockfile.FileLock(pidfile),
                               )


def program_cleanup():
    pass


def reload_program_config():
    pass


context.signal_map = {signal.SIGTERM: program_cleanup,
                      signal.SIGHUP: 'terminate',
                      signal.SIGUSR1: reload_program_config,
                      }

if Path(locfile).is_file():
    print("PID file exists - old process still running? Exiting ..")
    sys.exit()

with context:
    LOG_FORMAT = "%(asctime)s [%(threadName) - 12.12s] [%(levelname)-8.8s] - %(message)s"
    logging.basicConfig(filename=logfile,
                        level=logging.DEBUG,
                        format=LOG_FORMAT)
    logger = logging.getLogger()
    logger.info("Contact Syncer started")

    while True:
        sync_main.main(logger)
...