Skip to content

Commit e5755be

Browse files
committed
Add trace and atrace functions for single event traces
1 parent 1d90b36 commit e5755be

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

httpcore/_trace.py

+50
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,56 @@
55
from ._models import Request
66

77

8+
def trace(
9+
name: str,
10+
logger: logging.Logger,
11+
request: Optional[Request] = None,
12+
kwargs: Optional[Dict[str, Any]] = None,
13+
) -> None:
14+
trace_extension = None if request is None else request.extensions.get("trace")
15+
prefix = logger.name.split(".")[-1]
16+
info = kwargs or {}
17+
debug = logger.isEnabledFor(logging.DEBUG)
18+
19+
if debug or trace_extension:
20+
if trace_extension is not None:
21+
prefix_and_name = f"{prefix}.{name}"
22+
trace_extension(prefix_and_name, info)
23+
24+
if debug:
25+
if not info: # pragma: no cover
26+
message = name
27+
else:
28+
args = " ".join([f"{key}={value!r}" for key, value in info.items()])
29+
message = f"{name} {args}"
30+
logger.debug(message)
31+
32+
33+
async def atrace(
34+
name: str,
35+
logger: logging.Logger,
36+
request: Optional[Request] = None,
37+
kwargs: Optional[Dict[str, Any]] = None,
38+
) -> None:
39+
trace_extension = None if request is None else request.extensions.get("trace")
40+
prefix = logger.name.split(".")[-1]
41+
info = kwargs or {}
42+
debug = logger.isEnabledFor(logging.DEBUG)
43+
44+
if debug or trace_extension:
45+
if trace_extension is not None:
46+
prefix_and_name = f"{prefix}.{name}"
47+
await trace_extension(prefix_and_name, info)
48+
49+
if debug:
50+
if not info: # pragma: no cover
51+
message = name
52+
else:
53+
args = " ".join([f"{key}={value!r}" for key, value in info.items()])
54+
message = f"{name} {args}"
55+
logger.debug(message)
56+
57+
858
class Trace:
959
def __init__(
1060
self,

0 commit comments

Comments
 (0)