У меня проблема с модулем регистрации в 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)