Skip to content

Commit

Permalink
Merge pull request #2 from kodemore/refactor-correlation-causation-ids
Browse files Browse the repository at this point in the history
Added support for special tags which can be placed at root level
  • Loading branch information
dkraczkowski authored May 25, 2022
2 parents dd96fec + dcfa128 commit b78c6f7
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 8 deletions.
10 changes: 9 additions & 1 deletion chocs_middleware/trace/logger.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ def default(self, data: Any) -> Any:


class JsonFormatter(logging.Formatter):
ROOT_TAGS = ["x-request-id", "x-correlation-id", "x-causation-id"]

def __init__(
self, json_encoder: json.JSONEncoder = JsonEncoder(), message_format: str = "[{level}] {timestamp} {msg}"
):
Expand Down Expand Up @@ -108,9 +110,15 @@ def format(self, record: logging.LogRecord) -> str:
"args": getattr(record, "_message_kwargs", {}),
"level": record.levelname,
"timestamp": datetime.utcfromtimestamp(record.created).isoformat(),
"tags": self.format_tags(record),
"tags": {},
}

for name, value in self.format_tags(record).items():
if name in self.ROOT_TAGS:
payload[name] = value
else:
payload["tags"][name] = value

log = {}
for key in LOG_RECORD_FIELDS:
if not hasattr(record, key):
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "chocs_middleware.trace"
version = "0.4.0"
version = "0.4.1"
description = "Http tracing middleware for chocs library."
authors = ["Dawid Kraczkowski <dawid.kraczkowski@gmail.com>"]
license = "MIT"
Expand Down
12 changes: 6 additions & 6 deletions tests/trace/test_logger.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,13 +107,13 @@ def test_can_attach_tags() -> None:
log = json.loads(json_payload)

assert "tags" in log
assert "x-request-id" in log["tags"]
assert "x-causation-id" in log["tags"]
assert "x-correlation-id" in log["tags"]
assert "x-request-id" in log
assert "x-causation-id" in log
assert "x-correlation-id" in log

assert log["tags"]["x-request-id"] == "req-1"
assert log["tags"]["x-causation-id"] == "caus-2"
assert log["tags"]["x-correlation-id"] == "correl-3"
assert log["x-request-id"] == "req-1"
assert log["x-causation-id"] == "caus-2"
assert log["x-correlation-id"] == "correl-3"


def test_can_log_a_dict() -> None:
Expand Down

0 comments on commit b78c6f7

Please sign in to comment.