-
-
Notifications
You must be signed in to change notification settings - Fork 262
Open
Description
If you inspect the stack the args are present in logging.Handler.format but not structlog.stdlib.ProcessorFormatter.format
processor, temp.py:15 <-- record.args = ()
format, stdlib.py:116 <-- record.args = ()
format, __init__.py:999 <-- record.args = ('a', 'b')
emit, __init__.py:1160
handle, __init__.py:1028
callHandlers, __init__.py:1762
handle, __init__.py:1700
_log, __init__.py:1684
info, __init__.py:1539
<module>, temp.py:26
import logging
import sys
import structlog
from structlog.types import EventDict
from structlog.typing import WrappedLogger
structlog.configure(processors=[structlog.stdlib.render_to_log_args_and_kwargs]) # processor shouldn't really matter here
def processor(logger: WrappedLogger, method_name: str, event_dict: EventDict) -> EventDict:
log_record: logging.LogRecord | None = event_dict.get("_record")
if log_record:
print(f"{log_record.args=}")
return event_dict["event"]
formatter = structlog.stdlib.ProcessorFormatter(fmt="%(message)s", processors=[processor])
handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(formatter)
logging.basicConfig(level=logging.INFO, handlers=[handler])
logger = logging.getLogger()
logger.info("test a=%s b=%s", "a", "b")Metadata
Metadata
Assignees
Labels
No labels