Skip to content
This repository was archived by the owner on Dec 21, 2024. It is now read-only.
This repository was archived by the owner on Dec 21, 2024. It is now read-only.

extra can not hava keys like name #181

Description

@thenumberouscode
import logging
from pythonjsonlogger import jsonlogger
import traceback

logger = logging.getLogger("myname")

logger.setLevel(logging.INFO) 
logHandler = logging.StreamHandler()
formatter = jsonlogger.JsonFormatter()
logHandler.setFormatter(formatter)
logger.addHandler(logHandler)

try:
    logger.info("test", extra={"name": "my_test_name"})
except Exception as e:
    print(traceback.format_exc())
    print(e)

above code throws a exception which tell us that name has already been existed in LogRecord

output

Traceback (most recent call last):
  File "json_logger.py", line 14, in <module>
    logger.info("test", extra={"name": "my_test_name"})
  File "/data/zhouzhao.zyl/repos/meta_service/venv/lib/python3.7/logging/__init__.py", line 1383, in info
    self._log(INFO, msg, args, **kwargs)
  File "/data/zhouzhao.zyl/repos/meta_service/venv/lib/python3.7/logging/__init__.py", line 1518, in _log
    exc_info, func, extra, sinfo)
  File "/data/zhouzhao.zyl/repos/meta_service/venv/lib/python3.7/logging/__init__.py", line 1492, in makeRecord
    raise KeyError("Attempt to overwrite %r in LogRecord" % key)
KeyError: "Attempt to overwrite 'name' in LogRecord"

Reading the related source code of logging, the name key has been set as myname as the logger name.
so I am seriously curious about that if the way of using extra in my code is correct?

python json logger version
python-json-logger 2.0.7
l

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions