"""
logging utils
"""
import logging
import logging.config
from django.conf import settings
from django.core.management.color import color_style
from django.utils.module_loading import import_string
logger = logging.getLogger('grpc.server')
DEFAULT_LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse',
},
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
'formatters': {
'grpc.server': {
'()': 'grpc_framework.utils.log.ServerFormatter',
'format': '[{server_time}] {message} {resp_code} {resp_time}',
'style': '{',
}
},
'handlers': {
'console': {
'level': 'INFO',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
},
'grpc.server': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'grpc.server',
},
},
'loggers': {
'grpc': {
'handlers': ['console'],
'level': 'INFO',
},
'grpc.server': {
'handlers': ['grpc.server'],
'level': 'INFO',
'propagate': False,
},
}
}
[docs]class RequireDebugFalse(logging.Filter):
[docs] def filter(self, record):
return not settings.DEBUG
[docs]class RequireDebugTrue(logging.Filter):
[docs] def filter(self, record):
return settings.DEBUG
[docs]def log_response(message, response, logger=logger, level=None, exc_info=None):
if level is None:
if response['code'] == 'success':
level = 'info'
else:
level = 'error'
getattr(logger, level)(
message,
extra={
'resp_time': response['resp_time'],
'resp_code': response['code'],
},
exc_info=exc_info
)