MCPcopy
hub / github.com/encode/uvicorn / MessageLoggerMiddleware

Class MessageLoggerMiddleware

uvicorn/middleware/message_logger.py:36–87  ·  uvicorn/middleware/message_logger.py::MessageLoggerMiddleware

Source from the content-addressed store, hash-verified

34
35
36class MessageLoggerMiddleware:
37 def __init__(self, app: class="st">"ASGI3Application"):
38 self.task_counter = 0
39 self.app = app
40 self.logger = logging.getLogger(class="st">"uvicorn.asgi")
41
42 def trace(message: Any, *args: Any, **kwargs: Any) -> None:
43 self.logger.log(TRACE_LOG_LEVEL, message, *args, **kwargs)
44
45 self.logger.trace = trace class="cm"># type: ignore
46
47 async def __call__(
48 self,
49 scope: class="st">"WWWScope",
50 receive: class="st">"ASGIReceiveCallable",
51 send: class="st">"ASGISendCallable",
52 ) -> None:
53 self.task_counter += 1
54
55 task_counter = self.task_counter
56 client = scope.get(class="st">"client")
57 prefix = class="st">"%s:%d - ASGI" % (client[0], client[1]) if client else class="st">"ASGI"
58
59 async def inner_receive() -> class="st">"ASGIReceiveEvent":
60 message = await receive()
61 logged_message = message_with_placeholders(message)
62 log_text = class="st">"%s [%d] Receive %s"
63 self.logger.trace( class="cm"># type: ignore
64 log_text, prefix, task_counter, logged_message
65 )
66 return message
67
68 async def inner_send(message: class="st">"ASGISendEvent") -> None:
69 logged_message = message_with_placeholders(message)
70 log_text = class="st">"%s [%d] Send %s"
71 self.logger.trace( class="cm"># type: ignore
72 log_text, prefix, task_counter, logged_message
73 )
74 await send(message)
75
76 logged_scope = message_with_placeholders(scope)
77 log_text = class="st">"%s [%d] Started scope=%s"
78 self.logger.trace(log_text, prefix, task_counter, logged_scope) class="cm"># type: ignore
79 try:
80 await self.app(scope, inner_receive, inner_send)
81 except BaseException as exc:
82 log_text = class="st">"%s [%d] Raised exception"
83 self.logger.trace(log_text, prefix, task_counter) class="cm"># type: ignore
84 raise exc from None
85 else:
86 log_text = class="st">"%s [%d] Completed"
87 self.logger.trace(log_text, prefix, task_counter) class="cm"># type: ignore

Callers 3

loadMethod · 0.90
test_message_loggerFunction · 0.90
test_message_logger_excFunction · 0.90

Calls

no outgoing calls

Tested by 2

test_message_loggerFunction · 0.72
test_message_logger_excFunction · 0.72