docker-ready
This commit is contained in:
54
main.py
54
main.py
@@ -1,8 +1,8 @@
|
||||
# main.py
|
||||
|
||||
import sys
|
||||
import time
|
||||
import logging
|
||||
import logging.handlers
|
||||
import os
|
||||
import schedule
|
||||
|
||||
import config
|
||||
@@ -11,15 +11,53 @@ from sd_api import ServiceDeskClient
|
||||
from sync_logic import Synchronizer
|
||||
|
||||
def setup_logging():
|
||||
"""Настраивает базовую конфигурацию логирования."""
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
||||
stream=sys.stdout, # Вывод логов в stdout
|
||||
"""
|
||||
Настраивает продвинутую конфигурацию логирования с ротацией файлов
|
||||
и разными уровнями для консоли и файла.
|
||||
"""
|
||||
# 1. Устанавливаем корневому логгеру самый низкий уровень (DEBUG).
|
||||
# Это позволяет хэндлерам самим решать, что пропускать.
|
||||
root_logger = logging.getLogger()
|
||||
root_logger.setLevel(logging.DEBUG)
|
||||
|
||||
# 2. Создаем директорию для логов, если она не существует.
|
||||
try:
|
||||
if not os.path.exists(config.LOG_PATH):
|
||||
os.makedirs(config.LOG_PATH)
|
||||
except OSError as e:
|
||||
print(f"Ошибка создания директории для логов {config.LOG_PATH}: {e}")
|
||||
# В случае ошибки выходим, т.к. логирование в файл не будет работать
|
||||
sys.exit(1)
|
||||
|
||||
# 3. Настраиваем форматтер для логов.
|
||||
log_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
||||
|
||||
# 4. Настраиваем хэндлер для вывода в консоль (уровень INFO).
|
||||
console_handler = logging.StreamHandler(sys.stdout)
|
||||
console_handler.setLevel(logging.INFO)
|
||||
console_handler.setFormatter(log_formatter)
|
||||
|
||||
# 5. Настраиваем хэндлер для записи в файл с ежедневной ротацией (уровень DEBUG).
|
||||
# Файлы будут вида sync_service.log, sync_service.log.2023-10-27 и т.д.
|
||||
log_file = os.path.join(config.LOG_PATH, 'sync_service.log')
|
||||
file_handler = logging.handlers.TimedRotatingFileHandler(
|
||||
log_file,
|
||||
when='midnight', # Ротация в полночь
|
||||
interval=1, # Каждый день
|
||||
backupCount=7, # Хранить 7 старых файлов
|
||||
encoding='utf-8'
|
||||
)
|
||||
# Отключаем слишком "болтливые" логи от сторонних библиотек
|
||||
file_handler.setLevel(logging.DEBUG)
|
||||
file_handler.setFormatter(log_formatter)
|
||||
|
||||
# 6. Добавляем оба хэндлера к корневому логгеру.
|
||||
root_logger.addHandler(console_handler)
|
||||
root_logger.addHandler(file_handler)
|
||||
|
||||
# 7. Отключаем слишком "болтливые" логи от сторонних библиотек.
|
||||
logging.getLogger("requests").setLevel(logging.WARNING)
|
||||
logging.getLogger("urllib3").setLevel(logging.WARNING)
|
||||
logging.getLogger("schedule").setLevel(logging.INFO)
|
||||
|
||||
def job():
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user