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']:
handler.setFormatter(formatter)
# Configure handlers
+ default_config = [
+ 'openerp.netsvc.rpc.request:INFO',
+ 'openerp.netsvc.rpc.response:INFO',
+ 'openerp.addons.web.common.http:INFO',
+ 'openerp.addons.web.common.openerplib: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.
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):
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: