X-Git-Url: https://git.llucax.com/software/sercom-old.git/blobdiff_plain/a0d107bea4cae7a10895679d75a16f209b220b64..9d5cef9df44a7d6687a9563bc762ae56fe70103b:/src/sercom/util.py diff --git a/src/sercom/util.py b/src/sercom/util.py index 9736d6f..8bb473a 100644 --- a/src/sercom/util.py +++ b/src/sercom/util.py @@ -11,31 +11,42 @@ import ConfigParser # Módulos externos import sqlobject +log = None + def get_logger(tipo): - log = None + global log for log_conf in ('log.ini', os.path.expanduser('~/.sercom/log.ini'), '/etc/sercom/log.ini'): if (os.access(log_conf, os.R_OK)): logging.config.fileConfig(log_conf) log = logging.getLogger(tipo) return log +def log_exception(type, value, tb): + import traceback + e = traceback.format_exception(type, value, tb) + log.critical('Hubo una excepcion!\n%s', ''.join(e)) + def init(tipo): + global log # Seteo locale locale.setlocale(locale.LC_ALL, '') # Obtengo configuración conf = ConfigParser.SafeConfigParser() if not conf.read(('/etc/sercom/sercom.ini', os.path.expanduser('~/.sercom/sercom.ini'), 'sercom.ini')): - sys.stderr.write('No se pudo obtener configuración!\n') + print >>sys.stderr, 'No se pudo obtener configuración!' sys.exit(1) # Seteo umask para que el grupo pueda leer - os.umask(00027) + os.umask(00022) # Conexión a la DB - conn = sqlobject.connectionForURI(conf.get('dbo', 'database')) + conn = sqlobject.connectionForURI(conf.get('dbo', 'database') + + '?timeout=5000') # Si está lockeada espera 5seg antes de tirar error # Cargo config del logger log = get_logger(tipo) if not log: print >>sys.stderr, 'No se pudo cargar archivo de configuración de log.' sys.exit(1) + # Cambio el manejador de excepciones por uno que loguee + sys.excepthook = log_exception # Devuelvo cosas interesantes return (conf, conn, log)