Merge git configuration on master
[odoo/odoo.git] / openerp / netsvc.py
index 28919f2..bfdf7d3 100644 (file)
@@ -68,6 +68,8 @@ def LocalService(name):
                 with registry.cursor() as cr:
                     return registry['ir.actions.report.xml']._lookup_report(cr, name[len('report.'):])
 
+path_prefix = os.path.realpath(os.path.dirname(os.path.dirname(__file__)))
+
 class PostgreSQLHandler(logging.Handler):
     """ PostgreSQL Loggin Handler will store logs in the database, by default
     the current database, can be set using --log-db=DBNAME
@@ -75,28 +77,24 @@ class PostgreSQLHandler(logging.Handler):
     def emit(self, record):
         ct = threading.current_thread()
         ct_db = getattr(ct, 'dbname', None)
-        ct_uid = getattr(ct, 'uid', None)
         dbname = tools.config['log_db'] or ct_db
-        if dbname:
-            cr = None
-            try:
-                cr = sql_db.db_connect(dbname).cursor()
-                msg = unicode(record.msg)
-                traceback = getattr(record, 'exc_text', '')
-                if traceback:
-                    msg = "%s\n%s" % (msg, traceback)
-                level = logging.getLevelName(record.levelno)
-                val = (ct_uid, ct_uid, 'server', dbname, record.name, level, msg, record.pathname, record.lineno, record.funcName)
-                cr.execute("""
-                    INSERT INTO ir_logging(create_date, write_date, create_uid, write_uid, type, dbname, name, level, message, path, line, func)
-                    VALUES (NOW() at time zone 'UTC', NOW() at time zone 'UTC', %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
-                """, val )
-                cr.commit()
-            except Exception, e:
-                pass
-            finally:
-                if cr:
-                    cr.close()
+        if not dbname:
+            return
+        with tools.ignore(Exception), tools.mute_logger('openerp.sql_db'), sql_db.db_connect(dbname, allow_uri=True).cursor() as cr:
+            msg = tools.ustr(record.msg)
+            if record.args:
+                msg = msg % record.args
+            traceback = getattr(record, 'exc_text', '')
+            if traceback:
+                msg = "%s\n%s" % (msg, traceback)
+            # we do not use record.levelname because it may have been changed by ColoredFormatter.
+            levelname = logging.getLevelName(record.levelno)
+
+            val = ('server', ct_db, record.name, levelname, msg, record.pathname[len(path_prefix)+1:], record.lineno, record.funcName)
+            cr.execute("""
+                INSERT INTO ir_logging(create_date, type, dbname, name, level, message, path, line, func)
+                VALUES (NOW() at time zone 'UTC', %s, %s, %s, %s, %s, %s, %s, %s)
+            """, val)
 
 BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, _NOTHING, DEFAULT = range(10)
 #The background is set with 40 plus the number of the color, and the foreground with 30
@@ -121,7 +119,7 @@ class DBFormatter(logging.Formatter):
 
 class ColoredFormatter(DBFormatter):
     def format(self, record):
-        fg_color, bg_color = LEVEL_COLOR_MAPPING[record.levelno]
+        fg_color, bg_color = LEVEL_COLOR_MAPPING.get(record.levelno, (GREEN, DEFAULT))
         record.levelname = COLOR_PATTERN % (30 + fg_color, 40 + bg_color, record.levelname)
         return DBFormatter.format(self, record)
 
@@ -132,6 +130,8 @@ def init_logger():
         return
     _logger_init = True
 
+    logging.addLevelName(25, "INFO")
+
     from tools.translate import resetlocale
     resetlocale()
 
@@ -160,7 +160,7 @@ def init_logger():
             elif os.name == 'posix':
                 handler = logging.handlers.WatchedFileHandler(logf)
             else:
-                handler = logging.handlers.FileHandler(logf)
+                handler = logging.FileHandler(logf)
         except Exception:
             sys.stderr.write("ERROR: couldn't create the logfile directory. Logging to the standard output.\n")
             handler = logging.StreamHandler(sys.stdout)
@@ -185,7 +185,7 @@ def init_logger():
 
     if tools.config['log_db']:
         postgresqlHandler = PostgreSQLHandler()
-        postgresqlHandler.setLevel(logging.WARNING)
+        postgresqlHandler.setLevel(25)
         logging.getLogger().addHandler(postgresqlHandler)
 
     # Configure loggers levels
@@ -205,21 +205,21 @@ def init_logger():
 
 DEFAULT_LOG_CONFIGURATION = [
     'openerp.workflow.workitem:WARNING',
-    'openerp.netsvc.rpc.request:INFO',
-    'openerp.netsvc.rpc.response:INFO',
+    'openerp.http.rpc.request:INFO',
+    'openerp.http.rpc.response:INFO',
     'openerp.addons.web.http:INFO',
     'openerp.sql_db:INFO',
     ':INFO',
 ]
 PSEUDOCONFIG_MAPPER = {
-    'debug_rpc_answer': ['openerp:DEBUG','openerp.netsvc.rpc.request:DEBUG', 'openerp.netsvc.rpc.response:DEBUG'],
-    'debug_rpc': ['openerp:DEBUG','openerp.netsvc.rpc.request:DEBUG'],
+    'debug_rpc_answer': ['openerp:DEBUG','openerp.http.rpc.request:DEBUG', 'openerp.http.rpc.response:DEBUG'],
+    'debug_rpc': ['openerp:DEBUG','openerp.http.rpc.request:DEBUG'],
     'debug': ['openerp:DEBUG'],
     'debug_sql': ['openerp.sql_db:DEBUG'],
     'info': [],
-    'warn': ['openerp:WARNING'],
-    'error': ['openerp:ERROR'],
-    'critical': ['openerp:CRITICAL'],
+    'warn': ['openerp:WARNING', 'werkzeug:WARNING'],
+    'error': ['openerp:ERROR', 'werkzeug:ERROR'],
+    'critical': ['openerp:CRITICAL', 'werkzeug:CRITICAL'],
 }
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: