diff --git a/tg_mainbot.py b/tg_mainbot.py index 04c7762..8d4f606 100644 --- a/tg_mainbot.py +++ b/tg_mainbot.py @@ -20,13 +20,6 @@ app = Flask(__name__) # Загружаем переменные окружения из файла .env load_dotenv() -# Настройка логирования -logging.basicConfig( - format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', - level=logging.INFO -) -logger = logging.getLogger(__name__) - # Получаем данные из переменных окружения RESPONDER_BOT_TOKEN = os.getenv('RESPONDER_BOT_TOKEN') CHANNEL_ID = os.getenv('CHANNEL_ID') @@ -34,6 +27,30 @@ WEBHOOK_URL = os.getenv('WEBHOOK_URL') WEBHOOK_PORT = int(os.getenv('WEBHOOK_PORT', '8443')) WEBHOOK_SECRET = os.getenv('WEBHOOK_SECRET') LOG_FILE = os.getenv('LOG_FILE', 'bot.log') + +# Настройка логирования +logger = logging.getLogger('TG_bot') +logger.setLevel(logging.INFO) + +formatter = logging.Formatter('[%(asctime)s] [%(name)s] %(message)s', datefmt='%Y-%m-%d %H:%M:%S') + +console_handler = logging.StreamHandler() +console_handler.setFormatter(formatter) +logger.addHandler(console_handler) + +class RetryFileHandler(logging.FileHandler): + def emit(self, record): + for _ in range(5): + try: + super().emit(record) + return + except (IOError, PermissionError): + time.sleep(0.5) + print(f"Failed to write to log file after 5 attempts: {record.msg}") + +file_handler = RetryFileHandler(LOG_FILE, encoding='utf-8') +file_handler.setFormatter(formatter) +logger.addHandler(file_handler) MAX_CAPTION_LENGTH = int(os.getenv('MAX_CAPTION_LENGTH', 1000)) MAX_TEXT_LENGTH = int(os.getenv('MAX_TEXT_LENGTH', 4000))