« Back to Index

[Python Exception Handling Attributes]

View original Gist on GitHub

Tags: #python #exceptions

Python Exception Handling Attributes.py

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"
}