X-Git-Url: http://git.inspyration.org/?a=blobdiff_plain;f=openerp%2Fnetsvc.py;h=e2e435a746f6e0043b4c201e8ed600d6a8a121d9;hb=4c68620d563b625532a476f127aca18ce088089b;hp=ff38fceb142db9f0cd774f3d3e9071334cfef22b;hpb=62750454e2f039884f7f202dc1938b508f325e1d;p=odoo%2Fodoo.git diff --git a/openerp/netsvc.py b/openerp/netsvc.py index ff38fce..e2e435a 100644 --- a/openerp/netsvc.py +++ b/openerp/netsvc.py @@ -3,7 +3,7 @@ ############################################################################## # # OpenERP, Open Source Management Solution -# Copyright (C) 2004-2011 OpenERP SA () +# Copyright (C) 2004-2012 OpenERP SA () # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -86,12 +86,12 @@ class Service(object): cls._services.pop(name) def LocalService(name): - # Special case for addons support, will be removed in a few days when addons - # are updated to directly use openerp.osv.osv.service. - if name == 'object_proxy': - return openerp.osv.osv.service + # Special case for addons support, will be removed in a few days when addons + # are updated to directly use openerp.osv.osv.service. + if name == 'object_proxy': + return openerp.osv.osv.service - return Service._services[name] + return Service._services[name] class ExportService(object): """ Proxy for exported services. @@ -151,7 +151,6 @@ def init_logger(): resetlocale() # create a format for log messages and dates - format = '[%(asctime)s][%(dbname)s] %(levelname)s:%(name)s:%(message)s' format = '%(asctime)s %(pid)s %(levelname)s %(dbname)s %(name)s: %(message)s' if tools.config['syslog']: @@ -190,25 +189,57 @@ def init_logger(): handler.setFormatter(formatter) # Configure handlers + default_config = [ + 'openerp.netsvc.rpc.request:INFO', + 'openerp.netsvc.rpc.response:INFO', + 'openerp.addons.web.http:INFO', + 'openerp.sql_db:INFO', + ':INFO', + ] + + if tools.config['log_level'] == 'info': + pseudo_config = [] + elif tools.config['log_level'] == 'debug_rpc': + pseudo_config = ['openerp:DEBUG','openerp.netsvc.rpc.request:DEBUG'] + elif tools.config['log_level'] == 'debug_rpc_answer': + pseudo_config = ['openerp:DEBUG','openerp.netsvc.rpc.request:DEBUG', 'openerp.netsvc.rpc.response:DEBUG'] + elif tools.config['log_level'] == 'debug': + pseudo_config = ['openerp:DEBUG'] + elif tools.config['log_level'] == 'test': + pseudo_config = ['openerp:TEST'] + elif tools.config['log_level'] == 'warn': + pseudo_config = ['openerp:WARNING'] + elif tools.config['log_level'] == 'error': + pseudo_config = ['openerp:ERROR'] + elif tools.config['log_level'] == 'critical': + pseudo_config = ['openerp:CRITICAL'] + elif tools.config['log_level'] == 'debug_sql': + pseudo_config = ['openerp.sql_db:DEBUG'] + else: + pseudo_config = [] + logconfig = tools.config['log_handler'] - for i in logconfig: - prefix, level = i.split(':') + + for logconfig_item in default_config + pseudo_config + logconfig: + loggername, level = logconfig_item.split(':') level = getattr(logging, level, logging.INFO) - logger = logging.getLogger(prefix) + logger = logging.getLogger(loggername) logger.handlers = [] logger.setLevel(level) logger.addHandler(handler) - if prefix != '': + if loggername != '': logger.propagate = False + for logconfig_item in default_config + pseudo_config + logconfig: + _logger.debug('logger level set: "%s"', logconfig_item) # A alternative logging scheme for automated runs of the # server intended to test it. def init_alternative_logger(): class H(logging.Handler): - def emit(self, record): - if record.levelno > 20: - print record.levelno, record.pathname, record.msg + def emit(self, record): + if record.levelno > 20: + print record.levelno, record.pathname, record.msg handler = H() # Add the handler to the 'openerp' logger. logger = logging.getLogger('openerp') @@ -302,11 +333,11 @@ def replace_request_password(args): args[2] = '*' return tuple(args) -def dispatch_rpc_log(logger, prefix, msg, depth=None): +def log(logger, level, prefix, msg, depth=None): indent='' indent_after=' '*len(prefix) for line in (prefix+pformat(msg, depth=depth)).split('\n'): - logger.debug(indent+line) + logger.log(level, indent+line) indent=indent_after def dispatch_rpc(service_name, method, params): @@ -316,23 +347,25 @@ def dispatch_rpc(service_name, method, params): NET-RPC) is done in a upper layer. """ try: - rpc_short = logging.getLogger(__name__ + '.rpc_short') - rpc_full = logging.getLogger(__name__ + '.rpc_full') - rpc_short_flag = rpc_short.isEnabledFor(logging.DEBUG) - rpc_full_flag = rpc_full.isEnabledFor(logging.DEBUG) - if rpc_short_flag or rpc_full_flag: + rpc_request = logging.getLogger(__name__ + '.rpc.request') + rpc_response = logging.getLogger(__name__ + '.rpc.response') + rpc_request_flag = rpc_request.isEnabledFor(logging.DEBUG) + rpc_response_flag = rpc_response.isEnabledFor(logging.DEBUG) + if rpc_request_flag or rpc_response_flag: start_time = time.time() - if rpc_full_flag: - dispatch_rpc_log(rpc_full,'%s.%s:request '%(service_name,method), replace_request_password(params)) + if rpc_request and rpc_response_flag: + log(rpc_request,logging.DEBUG,'%s.%s'%(service_name,method), replace_request_password(params)) + threading.current_thread().uid = None + threading.current_thread().dbname = None result = ExportService.getService(service_name).dispatch(method, params) - if rpc_short_flag or rpc_full_flag: + if rpc_request_flag or rpc_response_flag: end_time = time.time() - if rpc_full_flag: - dispatch_rpc_log(rpc_full,'%s.%s:reply time:%.3fs '%(service_name,method,end_time - start_time), result) + if rpc_response_flag: + log(rpc_response,logging.DEBUG,'%s.%s time:%.3fs '%(service_name,method,end_time - start_time), result) else: - dispatch_rpc_log(rpc_short,'%s.%s time:%.3fs '%(service_name,method,end_time - start_time), replace_request_password(params), depth=1) + log(rpc_request,logging.DEBUG,'%s.%s time:%.3fs '%(service_name,method,end_time - start_time), replace_request_password(params), depth=1) return result except openerp.exceptions.AccessError: @@ -342,11 +375,11 @@ def dispatch_rpc(service_name, method, params): except openerp.exceptions.Warning: raise except openerp.exceptions.DeferredException, e: - _logger.error(tools.exception_to_unicode(e)) + _logger.exception(tools.exception_to_unicode(e)) post_mortem(e.traceback) raise except Exception, e: - _logger.error(tools.exception_to_unicode(e)) + _logger.exception(tools.exception_to_unicode(e)) post_mortem(sys.exc_info()) raise