def test_logging_exception_traceback(stdout): logger = Logger(level="DEBUG", stream=stdout) try: raise ValueError("Boom") except ValueError: logger.exception("A value error occurred") log_dict = json.loads(stdout.getvalue()) check_log_dict(log_dict) assert "ERROR" == log_dict["level"] assert "exception" in log_dict
def test_logging_exception_traceback(stdout): logger = Logger(level="DEBUG", stream=stdout, request_id="request id!", another="value") try: raise Exception("Boom") except Exception: logger.exception("This is a test") log_dict = json.loads(stdout.getvalue()) check_log_dict(log_dict) assert "exception" in log_dict
def event_log(s3_bucket: str, s3_key: str, function_name: str, logger: Logger) -> EventLog: logger.append_keys(s3_bucket=s3_bucket, s3_key=s3_key) logger.debug(f"processing s3 event") log = EventLog( status=STATUS_PROCESSING, s3_key=s3_key, s3_bucket=s3_bucket, function=function_name, region=os.environ.get('AWS_REGION', 'no region set'), received_time=datetime.now(timezone.utc), # TODO get from s3 record ) log.logger = logger log.save() try: yield log log.mark_processed() except Exception as e: if logger.log_level == 'DEBUG': logger.exception(f"error processing s3 object") log.mark_failed(str(e)) raise