Agregar logging estructurado, try-catches y envío de errores por Telegram

- Agregado logging estructurado en todos los módulos
- Implementados try-catches en todos los métodos críticos
- Errores ahora se envían automáticamente por Telegram
- Mejorado manejo de excepciones en requests HTTP
- Agregado try-catch global en main.py para errores no manejados
- Logging detallado en timenet_manager, telegram_bot, google_calendar y config_parser
This commit is contained in:
Omar Sánchez Pizarro
2026-01-13 01:39:16 +01:00
parent c052439de3
commit ce179ebff9
5 changed files with 712 additions and 219 deletions

74
main.py
View File

@@ -12,11 +12,79 @@
#
# Creado: Omar Sánchez 04-05-2019
# Importamos App Principal
from app import timenet_manager
import sys
import traceback
import logging
import asyncio
from app import timenet_manager, telegram_bot
# Configurar logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
logger = logging.getLogger(__name__)
if __name__ == '__main__':
af = timenet_manager.timenetManager()
af.sendUpdate()
telegram = None
try:
logger.info("=" * 50)
logger.info("Iniciando autoficher...")
logger.info("=" * 50)
af = timenet_manager.timenetManager()
telegram = af.telegram
af.sendUpdate()
logger.info("=" * 50)
logger.info("Autoficher completado exitosamente")
logger.info("=" * 50)
except KeyboardInterrupt:
logger.info("Interrupción por el usuario (Ctrl+C)")
sys.exit(0)
except SystemExit as e:
logger.info(f"Salida del sistema con código: {e.code}")
sys.exit(e.code if e.code else 0)
except Exception as e:
error_msg = f"Error crítico no manejado: {str(e)}"
error_traceback = traceback.format_exc()
logger.error("=" * 50)
logger.error("ERROR CRÍTICO NO MANEJADO")
logger.error("=" * 50)
logger.error(error_msg)
logger.error(error_traceback)
logger.error("=" * 50)
# Intentar enviar error por Telegram
try:
if telegram:
full_error = f"🟥🕐 ERROR CRÍTICO EN AUTOFICHER\n\n{error_msg}\n\n```\n{error_traceback}\n```"
asyncio.run(telegram.sendMessage(full_error))
logger.info("Error enviado por Telegram")
else:
# Intentar crear un bot temporal para enviar el error
try:
temp_telegram = telegram_bot.telegramBot()
full_error = f"🟥🕐 ERROR CRÍTICO EN AUTOFICHER\n\n{error_msg}\n\n```\n{error_traceback}\n```"
asyncio.run(temp_telegram.sendMessage(full_error))
logger.info("Error enviado por Telegram (bot temporal)")
except:
logger.error("No se pudo enviar el error por Telegram")
except Exception as telegram_error:
logger.error(f"Error al intentar enviar mensaje por Telegram: {str(telegram_error)}")
# Imprimir error en consola también
print(f"\n{'=' * 50}")
print("ERROR CRÍTICO")
print(f"{'=' * 50}")
print(error_msg)
print(f"\nTraceback completo:")
print(error_traceback)
print(f"{'=' * 50}\n")
sys.exit(1)