From 1ab09878032a644cca80a1e8403ecdf33e460139 Mon Sep 17 00:00:00 2001 From: Jacques-Etienne Baudoux Date: Wed, 11 May 2011 18:07:07 +0200 Subject: [PATCH 1/2] [IMP] logging of rpc calls and cron jobs lp bug: https://launchpad.net/bugs/781190 fixed bzr revid: jba@openerp.com-20110511160707-lsf87msknw7rngus --- openerp/addons/base/ir/ir_cron.py | 9 ++++++++- openerp/netsvc.py | 20 +++++++++++--------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/openerp/addons/base/ir/ir_cron.py b/openerp/addons/base/ir/ir_cron.py index 2ab8819792a..aac021b0497 100644 --- a/openerp/addons/base/ir/ir_cron.py +++ b/openerp/addons/base/ir/ir_cron.py @@ -20,6 +20,10 @@ ############################################################################## import time +import sys +import traceback +import logging +from pprint import pformat from datetime import datetime from dateutil.relativedelta import relativedelta import netsvc @@ -91,10 +95,13 @@ class ir_cron(osv.osv, netsvc.Agent): if m and hasattr(m, func): f = getattr(m, func) try: + depth=(None if self._logger.isEnabledFor(logging.DEBUG_RPC_ANSWER) else 1) + netsvc.log('cron', (cr.dbname,uid,'*',model,func)+tuple(args), channel=logging.DEBUG, depth=(None if self._logger.isEnabledFor(logging.DEBUG_RPC_ANSWER) else 1), fn='object.execute') f(cr, uid, *args) except Exception, e: cr.rollback() - self._logger.exception("Job call of self.pool.get('%s').%s(cr, uid, *%r) failed" % (model, func, args)) + logger=logging.getLogger('cron') + logger.exception("Job call of self.pool.get('%s').%s(cr, uid, *%r) failed" % (model, func, args)) def _poolJobs(self, db_name, check=False): diff --git a/openerp/netsvc.py b/openerp/netsvc.py index 1b8d54e3c8e..f06f96f7285 100644 --- a/openerp/netsvc.py +++ b/openerp/netsvc.py @@ -393,19 +393,21 @@ def replace_request_password(args): args[2] = '*' return args -class OpenERPDispatcher: - def log(self, title, msg, channel=logging.DEBUG_RPC, depth=None): - logger = logging.getLogger(title) - if logger.isEnabledFor(channel): - for line in pformat(msg, depth=depth).split('\n'): - logger.log(channel, line) +def log(title, msg, channel=logging.DEBUG_RPC, depth=None, fn=""): + logger = logging.getLogger(title) + if logger.isEnabledFor(channel): + indent=0 + for line in (fn+pformat(msg, depth=depth)).split('\n'): + logger.log(channel, ' '*indent+line) + indent=len(fn) +class OpenERPDispatcher: + def log(self, title, msg, channel=logging.DEBUG_RPC, depth=None, fn=""): + log(title, msg, channel=channel, depth=depth, fn=fn) def dispatch(self, service_name, method, params): try: logger = logging.getLogger('result') - self.log('service', service_name) - self.log('method', method) - self.log('params', replace_request_password(params), depth=(None if logger.isEnabledFor(logging.DEBUG_RPC_ANSWER) else 1)) + self.log('service', tuple(replace_request_password(params)), depth=(None if logger.isEnabledFor(logging.DEBUG_RPC_ANSWER) else 1), fn='%s.%s'%(service_name,method)) auth = getattr(self, 'auth_provider', None) result = ExportService.getService(service_name).dispatch(method, auth, params) self.log('result', result, channel=logging.DEBUG_RPC_ANSWER) From 56b794c64409edea90cdc63a9c8ea558d5414fd8 Mon Sep 17 00:00:00 2001 From: Jacques-Etienne Baudoux Date: Fri, 13 May 2011 15:35:14 +0200 Subject: [PATCH 2/2] [FIX] removed unused imports, unused depth definition, changed indent definition bzr revid: jba@openerp.com-20110513133514-zojsknaqrybu347e --- openerp/addons/base/ir/ir_cron.py | 7 ++----- openerp/netsvc.py | 7 ++++--- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/openerp/addons/base/ir/ir_cron.py b/openerp/addons/base/ir/ir_cron.py index aac021b0497..2766aa29bc0 100644 --- a/openerp/addons/base/ir/ir_cron.py +++ b/openerp/addons/base/ir/ir_cron.py @@ -20,10 +20,7 @@ ############################################################################## import time -import sys -import traceback import logging -from pprint import pformat from datetime import datetime from dateutil.relativedelta import relativedelta import netsvc @@ -95,8 +92,8 @@ class ir_cron(osv.osv, netsvc.Agent): if m and hasattr(m, func): f = getattr(m, func) try: - depth=(None if self._logger.isEnabledFor(logging.DEBUG_RPC_ANSWER) else 1) - netsvc.log('cron', (cr.dbname,uid,'*',model,func)+tuple(args), channel=logging.DEBUG, depth=(None if self._logger.isEnabledFor(logging.DEBUG_RPC_ANSWER) else 1), fn='object.execute') + netsvc.log('cron', (cr.dbname,uid,'*',model,func)+tuple(args), channel=logging.DEBUG, + depth=(None if self._logger.isEnabledFor(logging.DEBUG_RPC_ANSWER) else 1), fn='object.execute') f(cr, uid, *args) except Exception, e: cr.rollback() diff --git a/openerp/netsvc.py b/openerp/netsvc.py index f06f96f7285..9d3e338a9e1 100644 --- a/openerp/netsvc.py +++ b/openerp/netsvc.py @@ -396,10 +396,11 @@ def replace_request_password(args): def log(title, msg, channel=logging.DEBUG_RPC, depth=None, fn=""): logger = logging.getLogger(title) if logger.isEnabledFor(channel): - indent=0 + indent='' + indent_after=' '*len(fn) for line in (fn+pformat(msg, depth=depth)).split('\n'): - logger.log(channel, ' '*indent+line) - indent=len(fn) + logger.log(channel, indent+line) + indent=indent_after class OpenERPDispatcher: def log(self, title, msg, channel=logging.DEBUG_RPC, depth=None, fn=""):