ASGI¶
If the ASGI web framework you're using doesn't have a dedicated integration, you can use the
logfire.instrument_asgi() method to instrument it.
Installation¶
Install logfire with the asgi extra:
pip install 'logfire[asgi]'
uv add 'logfire[asgi]'
Usage¶
Below we have a minimal example using Uvicorn. You can run it with python main.py:
main.py
import logfire
logfire.configure()
async def app(scope, receive, send):
assert scope['type'] == 'http'
await send(
{
'type': 'http.response.start',
'status': 200,
'headers': [(b'content-type', b'text/plain'), (b'content-length', b'13')],
}
)
await send({'type': 'http.response.body', 'body': b'Hello, world!'})
app = logfire.instrument_asgi(app)
if __name__ == '__main__':
import uvicorn
uvicorn.run(app)
The keyword arguments of logfire.instrument_asgi() are passed to the
OpenTelemetryMiddleware class
of the OpenTelemetry ASGI Instrumentation package.
Excluding URLs from instrumentation¶
Note
instrument_asgi does accept an excluded_urls parameter, but does not support specifying said URLs via an environment variable,
unlike other instrumentations.