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
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
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)
return
_logger_init = True
+ logging.addLevelName(25, "INFO")
+
from tools.translate import resetlocale
resetlocale()
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)
if tools.config['log_db']:
postgresqlHandler = PostgreSQLHandler()
- postgresqlHandler.setLevel(logging.WARNING)
+ postgresqlHandler.setLevel(25)
logging.getLogger().addHandler(postgresqlHandler)
# Configure loggers levels
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: