def add_fields(self, log_record, record, message_dict): super(CustomJsonFormatter, self).add_fields(log_record, record, message_dict) if log_record.get(IS_STRUCTLOG_KEY) is True: del log_record[IS_STRUCTLOG_KEY] else: # Applying contextvars to non-structlog events contextvars = merge_contextvars(None, None, {}) log_record.update(contextvars) timestamp = datetime.fromtimestamp(record.created, tz=pytz.utc) _add_record(log_record, "timestamp", timestamp.isoformat()) _add_record( log_record, "timestamps", { "epoch": record.created, "utc": timestamp.isoformat(), "montreal": timestamp.astimezone( pytz.timezone("America/Montreal")).isoformat(), }, ) _add_record(log_record, "logger", record.name) _add_record(log_record, "level", record.levelname.lower()) _add_record(log_record, "lineno", record.lineno) _add_record(log_record, "pathname", record.pathname) _add_record(log_record, "threadName", record.threadName) _add_record(log_record, "processName", record.processName)
async def coro2(): bind_contextvars(a=2) await coro1_bind.wait() coro2_bind.set() return merge_contextvars(None, None, {"b": 2})
async def coro(): bind_contextvars(a=1) clear_contextvars() return merge_contextvars(None, None, {"b": 2})
async def coro(): bind_contextvars(a=1) return merge_contextvars(None, None, {"a": 111, "b": 2})
async def coro(): return merge_contextvars(None, None, {"b": 2})
async def nested_coro(): bind_contextvars(c=3) return merge_contextvars(None, None, {"b": 2})
async def coro(): bind_contextvars(a=1, c=3) bind_contextvars(c=333, d=4) return merge_contextvars(None, None, {"b": 2})
async def coro(): # Since unbinding means "setting to Ellipsis", we have to make # some effort to ensure that the ContextVar never existed. unbind_contextvars("a" + secrets.token_hex()) return merge_contextvars(None, None, {"b": 2})
async def coro(): bind_contextvars(a=1) unbind_contextvars("a") return merge_contextvars(None, None, {"b": 2})
async def coro(): clear_contextvars() return merge_contextvars(None, None, {})
async def coro(): bind_contextvars(a=1) await event_loop.create_task(nested_coro()) return merge_contextvars(None, None, {"b": 2})
def __enter__(self): self._existing_vars = contextvars.merge_contextvars( logger=None, method_name=None, event_dict={} ) contextvars.bind_contextvars(**self._context) return self