Tags: #python #exceptions
import structlog
structlogger = structlog.getLogger(__name__)
try:
nonexistent() # NameError
except Exception as err:
structlogger.error('exception',
exc_type=err.__class__.__name__,
exc_msg=str(err),
orig_err=err)
"""
2018-08-31 11:46.17 exception exc_msg=name 'nonexistent' is not defined exc_type=NameError orig_err=NameError("name 'nonexistent' is not defined",)
"""
#########################
structlog.configure(cache_logger_on_first_use=True,
context_class=dict,
logger_factory=structlog.stdlib.LoggerFactory(),
processors=[structlog.stdlib.add_logger_name,
structlog.stdlib.add_log_level,
structlog.processors.TimeStamper(fmt="%Y-%m-%d %H:%M.%S"),
structlog.processors.JSONRenderer(sort_keys=True)])
try:
nonexistent() # NameError
except Exception as err:
structlogger.error('exception',
exc_type=err.__class__.__name__,
exc_msg=str(err),
orig_err=err)
{
"event": "exception",
"exc_msg": "name 'nonexistent' is not defined",
"exc_type": "NameError",
"level": "error",
"logger": "__main__",
"orig_err": "NameError(\"name 'nonexistent' is not defined\",)",
"timestamp": "2018-08-31 10:51.19"
}