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:
74
main.py
74
main.py
@@ -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)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user