]> git.llucax.com Git - software/sercom-old.git/blobdiff - src/sercom/util.py
Se agrega un manejador de excepciones que loguea.
[software/sercom-old.git] / src / sercom / util.py
index 9736d6fe72f1fab3599637c8ed474bd9ac639b7c..3f4aa40aaa8e2ad9068994216f0ddd2be9f3be01 100644 (file)
@@ -11,21 +11,29 @@ 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)
@@ -36,6 +44,8 @@ def init(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)