← Back to team overview

openerp-dev-web team mailing list archive

[Merge] lp:~openerp-dev/openobject-server/trunk-bugfix-781190 into lp:openobject-server

 

Jacques-Etienne Baudoux (OpenERP) has proposed merging lp:~openerp-dev/openobject-server/trunk-bugfix-781190 into lp:openobject-server.

Requested reviews:
  OpenERP Core Team (openerp)
Related bugs:
  Bug #781190 in OpenERP Server: "cron jobs are not logged (log-level=debug)"
  https://bugs.launchpad.net/openobject-server/+bug/781190

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-bugfix-781190/+merge/60660

Improved logging of rpc calls and cron jobs
-- 
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-bugfix-781190/+merge/60660
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-server/trunk-bugfix-781190.
=== modified file 'openerp/addons/base/ir/ir_cron.py'
--- openerp/addons/base/ir/ir_cron.py	2011-02-16 14:22:42 +0000
+++ openerp/addons/base/ir/ir_cron.py	2011-05-11 16:11:11 +0000
@@ -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 @@
         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):

=== modified file 'openerp/netsvc.py'
--- openerp/netsvc.py	2011-02-07 12:57:23 +0000
+++ openerp/netsvc.py	2011-05-11 16:11:11 +0000
@@ -393,19 +393,21 @@
         args[2] = '*'
     return args
 
+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):
-        logger = logging.getLogger(title)
-        if logger.isEnabledFor(channel):
-            for line in pformat(msg, depth=depth).split('\n'):
-                logger.log(channel, line)
-
+    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)


Follow ups