Skip to content

Release Notes

v4.31.0 (2026-03-27)

  • Add logfire.instrument_claude_agent_sdk() by @alexmojaki in #1799
  • feat: add logfire.url_from_eval(report) method by @Kludex in #1694
  • fix: include cached tokens in gen_ai.usage.input_tokens for Anthropic by @alexmojaki in #1812
  • fix: handle bare MCP request types for fastmcp 3.x compatibility by @alexmojaki in #1813

v4.30.0 (2026-03-23)

  • Add logfire auth logout command by @ai-man-codes in #1781
  • Remove Rich link styling from project URL output by @ameenalkhaldi in #1784
  • Fix push_config() to push labels and versions by @dmontagu in #1785
  • Merge export_dataset into get_dataset with include_cases parameter by @Kludex in #1792

v4.29.0 (2026-03-13)

  • Add gen_ai.usage.raw attribute to OpenAI Responses spans by @alexmojaki in #1777

v4.28.0 (2026-03-11)

  • Handle anthropic beta messages and refactor by @alexmojaki in #1774
  • Delete redundant logfire.experimental.datasets package by @alexmojaki in #1763
  • Change logfire_pytest fixture scope to session by @jirikuncar in #1758

v4.27.0 (2026-03-06)

  • Add gen_ai.system attribute to anthropic spans, enabling token/cost badges by @alexmojaki in #1760
  • Set operation.cost attribute on anthropic spans when genai-prices is installed by @alexmojaki in #1761

v4.26.0 (2026-03-06)

  • feat: add browser proxy helpers: forward_export_request and logfire_proxy by @AlanPonnachan in #1697
  • Handle pickling errors in dataclasses.asdict by @alexmojaki in #1756
  • Use additionalProperties for homogeneous dict schemas by @adriangb in #1738

v4.25.0 (2026-02-19)

  • Add experimental datasets package by @dmontagu in #1711
  • Extract langsmith provider name by @alexmojaki in #1720

v4.24.0 (2026-02-13)

  • Add managed variables by @dmontagu in #1691

v4.23.0 (2026-02-12)

  • feat: Add logfire.db_api — PEP 249 DB API 2.0 interface by @dmontagu in #1692
  • Add semantic convention message attributes to LLM integrations by @dmontagu in #1705
  • Fix some attributes in langsmith and openai_agents spans @alexmojaki in #1696
  • feat: support for pytest-xdist traceparent propagation by @jirikuncar in #1701
  • fix: re-attach OTel span context in pytest async test functions by @jirikuncar in #1693

v4.22.0 (2026-02-04)

  • feat: Add multi-token support for project migration by @adriangb in #1672
  • Fix google_genai integration crash when Gemini returns parts=None by @alexmojaki in #1678

v4.21.0 (2026-01-28)

  • feat: Add OTel Gen AI semantic convention scalar attributes by @brightsparc in #1657
  • Handle langchain reasoning summaries by @alexmojaki in #1665
  • Fix Responses API streaming error handling to not mask original errors by @jordanhboxer in #1668
  • Only patch os.exit once by @alexmojaki in #1663

v4.20.0 (2026-01-26)

  • feat: pytest integration by @jirikuncar in #1648
  • fix: anthropic response data should include tool call id by @mathislucka in #1636

v4.19.0 (2026-01-16)

  • Add DSPy integration to logfire by @bdsaglam in #1625
  • Set log level based on HTTP status code, create issues for handled exceptions in FastAPI when the status code is 5xx by @alexmojaki in #1628
  • Add OTel GenAI semantic convention attributes to LLM instrumentations by @jimilp7 in #1619
  • Minor optimization: move tweaking of ASGI send/receive span level by @alexmojaki in #1629

v4.18.0 (2026-01-12)

  • Adds aiohttp request body capture. by @adtyavrdhn in #1595
  • Claude SDK instrumentation by @alexmojaki in #1618

v4.17.0 (2026-01-07)

  • logfire.instrument_surrealdb by @alexmojaki in #1573
  • feat(config): allow custom Views in MetricOptions by @cyberksh in #1552
  • Handle unpicklable configuration in ProcessPoolExecutor patch #1556 by @pipinstalled in #1567
  • Maintain original LLM request context when logging the streaming response by @yiphei in #1566
  • Add note about write_token permission in logfire projects commands by @Viicos in #1545

v4.16.0 (2025-12-04)

  • Support OpenTelemetry 1.39.0, drop support for earlier versions, stop using the OTel events API/SDK by @alexmojaki in #1562
  • Add new_trace parameter to logfire.instrument by @njz-cvm in #1499
  • Fix JSON serialization error with instrument_google_genai by @alexmojaki in #1551
  • Support kwargs in ProxyLogger emit() by @qianl15 in #1561

v4.15.1 (2025-11-20)

  • Make logfire.instrumented functions cloudpicklable by @alexmojaki in #1542

v4.15.0 (2025-11-19)

  • Limit retried exports based on total size, not number by @alexmojaki in #1527
  • More tweaks to retrying exports by @alexmojaki in #1531

v4.14.2 (2025-10-24)

  • Ensure OTEL_EXPORTER_OTLP_HEADERS doesn’t override logfire token by @alexmojaki in #1500

v4.14.1 (2025-10-22)

  • Skip recording exceptions on NonRecordingSpan by @alexmojaki in #1497

v4.14.0 (2025-10-21)

  • Support OpenTelemetry 1.38, fix instrument_google_genai and instrument_langchain by @alexmojaki in #1495

v4.13.2 (2025-10-13)

  • Comply with opencode MCP format by @Kludex in #1488

v4.13.1 (2025-10-13)

  • Add “type” keyword on opencode MCP settings by @Kludex in #1486

v4.13.0 (2025-10-09)

  • Store OpenAI Responses streaming response in events format understood by UI by @alexmojaki in #1479
  • Add output option to logfire.ConsoleOptions, e.g. to log to stderr instead of stdout by @stevenh in #1477
  • Update logfire.instrument_pydantic_ai() parameters by @alexmojaki in #1480

v4.12.0 (2025-10-08)

  • Record response when streaming OpenAI Responses API by @stevenh in #1457
  • Record operation.cost span attribute on OpenAI spans by @alexmojaki in #1468

v4.11.0 (2025-10-03)

  • Add experimental exception_callback configuration by @alexmojaki in #1355
  • Support Instrumenting Async SqlAlchemy Engines by @dhruv-ahuja in #1425
  • Always collect operation.cost metric in spans by @alexmojaki in #1435
  • Update pyproject.toml to be PEP639 compliant by @Kludex in #1429
  • Improve canonicalize_exception_traceback for RecursionError by @alexmojaki in #1455

v4.10.0 (2025-09-24)

  • Trigger auth command from prompt by @Kludex in #1423
  • Remove conditional check on OTEL version for Gauge import by @Viicos in #1426

v4.9.0 (2025-09-22)

  • Fix Root Model Not Rendering As Expected by @dhruv-ahuja in #1396
  • Use = instead of : in codex setup by @Kludex in #1420
  • Add support for OpenCode on the prompt command by @Kludex in #1421

v4.8.0 (2025-09-18)

  • Allow capturing headers and response body with logfire.instrument_aiohttp_client() by @adtyavrdhn in #1405 and #1409

v4.7.0 (2025-09-12)

  • Update to OpenTelemetry SDK 1.37.0, drop support for <1.35.0 by @alexmojaki in #1398

v4.6.0 (2025-09-10)

  • Fix: check LOGFIRE_IGNORE_NO_CONFIG from environment when needed by @Lftobs in #1379
  • Expand scrubbing whitelist, especially for gen_ai messages by @alexmojaki in #1392
  • Print project link eagerly from credentials file if possible by @alexmojaki in #1393
  • Fix: Only list orgs in CLI where projects can be created by @alexmojaki in #1391

v4.5.0 (2025-09-09)

  • Export attach_context and get_context directly from logfire module, not just logfire.propagate by @dhruv-ahuja in #1385
  • Only list writeable projects from CLI by @alexmojaki in #1386
  • Add ensure_ascii=False to json.dumps calls by @qiangxinglin in #1381
  • Remove unused stack_offset from with_settings() by @LucasSantos27 in #1380

v4.4.0 (2025-09-05)

  • Add logfire.instrument_print() by @alexmojaki in #1368
  • Record response on ‘MCP server handle request’ span by @alexmojaki in #1362
  • Handle MCP request metadata being a dict by @alexmojaki in #1360
  • fix: handle optional args in logfire.instrument by @stevenh in #1337
  • Add logfire_token to scrubbing patterns by @alexmojaki in #1367

v4.3.6 (2025-08-26)

  • Add specific code agent options for logfire prompt by @Kludex in #1350

v4.3.5 (2025-08-22)

  • Add --base-url to CLI by @Kludex in #1345
  • Don’t require stream kwarg in OpenAI methods by @alexmojaki in #1348

v4.3.4 (2025-08-21)

  • logfire.instrument_google_genai() fixes for response_schema and elided content by @alexmojaki in #1342
  • Fix enable_commenter and commenter_options args of instrument_sqlalchemy by @alexmojaki in #1335
  • Fix LangChain instrumentation by @alexmojaki in #1319
  • Suppress urllib3 logs while checking token by @alexmojaki in #1341

v4.3.3 (2025-08-13)

  • Ensure logfire_api.LogfireSpan.context and other attrs are None by @alexmojaki in #1317

v4.3.2 (2025-08-13)

  • Able to see output from token selection by @Kludex in #1312
  • Remove trailing / from prompts call by @Kludex in #1314
  • Change get read token info endpoint by @hramezani in #1309

v4.3.1 (2025-08-12)

  • Fix logfire_api requiring OpenTelemetry SDK by @alexmojaki in #1310

v4.3.0 (2025-08-12)

  • Closes logfire_api.LogfireSpan should support ReadableSpan attributes #989 by @RichardMarto in #1288
  • Fix test_instrument_google_genai for specific versions by @alexmojaki in #1303
  • Create read tokens via CLI by @Kludex in #1306
  • Retrieve the prompt to fix issues via CLI by @Kludex in #1307

v4.2.0 (2025-08-06)

  • Handle wrong JSON schema in console exporter by @alexmojaki in #1294
  • Move creation of span down on cli by @Kludex in #1298
  • Allow to set instrument_httpx(capture_all=True) via env var by @Kludex in #1295

v4.1.0 (2025-08-04)

  • Add min_level argument to logfire.configure by @alexmojaki in #1265

v4.0.1 (2025-07-31)

  • Handle cyclic references in exceptions by @alexmojaki in #1284
  • Support OpenTelemetry 1.36.0 by @alexmojaki in #1285

v4.0.0 (2025-07-22)

BREAKING CHANGES:

  • Remove extra FastAPI spans by default by @alexmojaki in #1268
  • Stop implicitly emitting deprecated process runtime metrics by @alexmojaki in #932

v3.25.0 (2025-07-18)

  • Use local timezone in console logging by @fswair in #1255
  • Add logfire run command by @Kludex in #1139
  • Allow removing extra FastAPI spans by @alexmojaki in #1258
  • Fix litellm instrumentation by @alexmojaki in #1249
  • Add logfire.exception.fingerprint attribute to spans with exceptions by @alexmojaki in #1253

v3.24.2 (2025-07-14)

  • Fix auto-tracing Python 3.12 ParamSpec syntax by @alexmojaki in #1247

v3.24.1 (2025-07-14)

  • Support OpenTelemetry 1.35.0 by @alexmojaki in #1242

v3.24.0 (2025-07-10)

  • Add experimental logfire.instrument_litellm() by @alexmojaki in #1237

v3.23.0 (2025-07-08)

  • Add info method to logfire query clients by @hramezani in #1204
  • Make query client not experimental by @alexmojaki in #1234

v3.22.1 (2025-07-07)

  • Fix OpenAI streaming reasoning by @alexmojaki in #1232
  • Handle bytes in google genai messages by @alexmojaki in #1231

v3.22.0 (2025-07-02)

  • Add instrument_google_genai by @alexmojaki in #1217
  • Refactor user tokens, introduce Logfire client by @Viicos in #981
  • Use new endpoint for project creation by @hramezani in #1202

v3.21.2 (2025-06-30)

  • Fix importlib resources with auto tracing by @alexmojaki in #1212

v3.21.1 (2025-06-18)

  • Fix for new OpenAI Agents SDK by @alexmojaki in #1152

v3.21.0 (2025-06-17)

  • Add up counter/histogram metrics in spans by @alexmojaki in #1099
  • Fix kwargs in proxy metric instruments, preventing warning about duplicate histograms by @alexmojaki in #1149

v3.20.0 (2025-06-16)

  • Add baggage utilities by @dmontagu in #1128
  • Handle NonRecordingSpans correctly in OpenAI instrumentation by @alexmojaki in #1145

v3.19.0 (2025-06-12)

  • logfire.instrument_aiohttp_server() by @adtyavrdhn in #1131
  • Fix handling of pydantic_core.Url and pydantic.AnyUrl by @dmontagu in #1130
  • Correct context for MCP logs by @alexmojaki in #1138
  • Check empty tokens before making connection attempt by @nagarajRPoojari in #1110
  • Pass meter provider to Pydantic AI by @alexmojaki in #1136

v3.18.0 (2025-06-05)

  • Upgrade to OpenTelemetry SDK 1.34.0 by @alexmojaki in #1120
  • Drop Python 3.8 support by @alexmojaki in #1122

v3.17.0 (2025-06-03)

  • LangChain instrumentation via LangSmith by @alexmojaki in #1084
  • MCP OTel context propagation by @samuelcolvin in #1103
  • Add capfire.get_collected_metrics() by @alexmojaki in #1116

v3.16.2 (2025-06-03)

  • Fixes for OpenAI Responses API and Agents SDK by @alexmojaki in #1092, #1093, #1094, and #1095
  • Fix verbose console formatting for enum, dates, and decimals by @sbhrwlr in #1096
  • Allow setting logfire.msg in structlog integration by @alexmojaki in #1113
  • Add ASGI instrumentation package to django extra by @alexmojaki in #1097

v3.16.1 (2025-05-26)

  • Infer base URL from read token in query client by @Viicos in #1088
  • Add include_binary_content (#1090) and **kwargs (#1078) to instrument_pydantic_ai by @alexmojaki

v3.16.0 (2025-05-14)

  • Make OpenAI spans show token usage in logfire UI by @alexmojaki in #1076
  • Fixes for verbose console logging by @alexmojaki in #1071 and #1072
  • Export first batch of spans more quickly by @alexmojaki in #1066
  • Tighten scrubbing patterns to reduce accidental matches by @alexmojaki in #1074
  • Add do_not_scrub and binary_content as safe keys for scrubber by @alexmojaki in #1075

v3.15.1 (2025-05-12)

  • Support OpenTelemetry SDK 1.33.0 by @alexmojaki in #1067

v3.15.0 (2025-05-08)

  • Remove attributes from http.server.active_requests metric to prevent emitting too many by @alexmojaki in #1060
    • This is technically a breaking change as it means less data is sent to Logfire, but most users don’t use it and some will save a significant amount of money.

v3.14.1 (2025-04-24)

  • Handle changes in openai and anthropic by @alexmojaki in #1030
  • Fix exporting of very large spans and payloads by @alexmojaki in #1027
  • Prevent infinite loop in get_user_frame_and_stacklevel by @alexmojaki in #1031

v3.14.0 (2025-04-11)

  • Experimental functions for recording feedback annotations

v3.13.1 (2025-04-10)

  • Upgrade to OpenTelemetry SDK 1.32.0 by @alexmojaki in #991

v3.13.0 (2025-04-10)

  • Emit logs sent from MCP server to client by @alexmojaki in #974
  • Return None from logfire_api.LogfireSpan.context when logfire could not be imported by @DouweM in #983

v3.12.0 (2025-03-31)

  • Add logfire.instrument_mcp() method by @alexmojaki in #966
  • Merge headers if passed via client_kwargs in query client by @Kludex in #958
  • Warn user if f-string expression contains await by @Sbargaoui in #944
  • Handle new MCP span in OpenAI Agents SDK by @alexmojaki in #963

v3.11.0 (2025-03-26)

  • Add record_return flag to @logfire.instrument by @alexmojaki in #955

v3.10.0 (2025-03-25)

  • Account for new EU region by @Viicos in #901

v3.9.1 (2025-03-25)

  • Handle Anthropic thinking blocks by @alexmojaki in #952
  • Handle new voice span types from OpenAI Agents SDK by @alexmojaki in #943

v3.9.0 (2025-03-18)

  • Add logfire.instrument_pydantic_ai() by @alexmojaki in #926

v3.8.1 (2025-03-13)

  • Upgrade to OpenTelemetry 1.31.0 by @alexmojaki in #927
  • Record exception with traceback for non-fatal function tool errors in OpenAI agents SDK by @alexmojaki in #924

v3.8.0 (2025-03-11)

  • OpenAI Agents Framework instrumentation by @alexmojaki in #917
  • OTel log scrubbing by @alexmojaki in #903

v3.7.1 (2025-03-05)

  • Handle errors in OpenAI response by @alexmojaki in #910
  • Include domain in message for outgoing HTTP requests: fix for old semconv by @alexmojaki in #909

v3.7.0 (2025-03-04)

  • Include domain in message for outgoing requests by @alexmojaki in #892
  • Console logging for OTel logs by @alexmojaki in #882
  • Fix auto-tracing with python -m by @alexmojaki in #905

v3.6.4 (2025-02-25)

  • Handle mocks by calling to_dict on type by @alexmojaki in #897

v3.6.3 (2025-02-25)

  • Handle missing shutdown and force_flush on NoOpLoggerProvider better by @alexmojaki in #895
  • Handle missing events SDK by @alexmojaki in #893

v3.6.2 (2025-02-22)

  • Fix typing errors involving handle_internal_errors by @alexmojaki in #885
  • Avoid double shutdown of logger provider by @alexmojaki in #878

v3.6.1 (2025-02-19)

  • avoid BatchLogRecordProcessor use on pyodide/emscripten by @samuelcolvin in #873

v3.6.0 (2025-02-18)

  • Set log level to warning instead of error for 4xx HTTPExceptions from FastAPI/Starlette by @alexmojaki in #858
  • Add option to disable printing tags to console by @dmontagu in #860
  • Experimental support for OTel logs by @alexmojaki in #863, #870, and #871
  • Fix excluded_urls typo in instrument_flask by @alexmojaki in #852
  • Catch more errors when checking for sqlalchemy objects by @alexmojaki in #854
  • Don’t scrub exception message by @alexmojaki in #865
  • Only skip logging to console after updating span stack and indentation by @alexmojaki in #844

v3.5.3 (2025-02-05)

  • Fixes for capturing httpx bodies by @alexmojaki in #842

v3.5.2 (2025-02-05)

  • Support OpenTelemetry 1.30.0 by @alexmojaki in #839

v3.5.1 (2025-02-04)

  • Prevent side effects when importing logfire by @alexmojaki in #835

v3.5.0 (2025-02-03)

  • Add logfire.logfire_info() by @samuelcolvin in #826
  • Add logfire.add_non_user_code_prefix function for library developers by @dmontagu in #829
  • Skip export retry in pyodide by @samuelcolvin in #823
  • More resilient console logging by @samuelcolvin in #831

v3.4.0 (2025-01-27)

  • Support Pyodide by @samuelcolvin in #818

v3.3.0 (2025-01-22)

  • Add process runtime information by @Kludex in #811

v3.2.0 (2025-01-17)

  • Fix conflict with ddtrace futures patching by renaming fn parameter by @alexmojaki in #802
  • Add logfire.warning to mirror logging.warning by @JacobHayes in #800
  • Try to_dict method when encoding JSON by @alexmojaki in #799
  • Don’t truncate numpy array dimensions below max by @alexmojaki in #792

v3.1.1 (2025-01-14)

  • Prevent OTel from logging noisy traceback for handled requests exceptions by @alexmojaki in #796

v3.1.0 (2025-01-09)

  • Add capture_all to instrument_httpx by @Kludex in #780
  • Ensure cleanup when forked process ends by @alexmojaki in #785
  • Generate trace IDs as ULIDs by default by @adriangb in #783

v3.0.0 (2025-01-07)

  • BREAKING CHANGE: Removed capture_request_json_body, capture_request_text_body, capture_request_form_data, and capture_response_json_body parameters from logfire.instrument_httpx(), replaced with capture_request_body capture_response_body by @Kludex in #769

Other changes:

  • Add distributed_tracing argument to logfire.configure() and warn by default when trace context is extracted by @alexmojaki in #773
  • Don’t show urllib3 when requests is installed on logfire inspect by @Kludex in #744
  • Add --ignore to logfire inspect by @Kludex in #748
  • Access model_fields on the model class by @Viicos in #761
  • Remove double record exception by @dmontagu in #712

v2.11.1 (2024-12-30)

  • Handle errors from sqlalchemy.inspect by @alexmojaki in #733

v2.11.0 (2024-12-23)

  • Add capture_request_text_body param to instrument_httpx by @alexmojaki in #722
  • Support for AnthropicBedrock client by @stephenhibbert in #701

v2.10.0 (2024-12-23)

  • Add capture_request_form_data param to instrument_httpx by @alexmojaki in #711
  • Replace capture_(request|response)_headers with just capture_headers in instrument_httpx by @Kludex in #719
  • Support SQLAlchemy AsyncEngine by @Kludex in #717

v2.9.0 (2024-12-20)

  • Capture httpx response JSON bodies by @alexmojaki in #700
  • Use end-at-shutdown and custom record_exception logic for all spans by @dmontagu in #696

v2.8.0 (2024-12-18)

  • Add capture_(request|response)_headers (#671) and capture_request_json_body (#682) to instrument_httpx by @Kludex
  • Fix patching of ProcessPoolExecutor by @alexmojaki in #690
  • Rearrange span processors to avoid repeating scrubbing and other tweaking by @alexmojaki in #658
  • Remove end-on-exit stuff by @dmontagu in #676

v2.7.1 (2024-12-13)

  • Fix erroneous <circular reference> when object is repeated in list by @alexmojaki in #664

v2.7.0 (2024-12-11)

  • Add logfire.instrument_aws_lambda by @Kludex in #657

v2.6.2 (2024-12-05)

  • Update the process.pid resource attribute after os.fork() by @alexmojaki in #647
  • Check for os.register_at_fork before calling by @alexmojaki in #648

v2.6.1 (2024-12-05)

  • Use exc_info in structlog processor by @alexmojaki in #641
  • Re-seed random ID generator after os.fork() by @alexmojaki in #644

v2.6.0 (2024-12-02)

  • Add instrument_sqlite3 by @Kludex in #634

v2.5.0 (2024-11-27)

  • Add logfire.suppress_scopes method by @alexmojaki in #628
  • Replace ModuleNotFoundError by ImportError by @Kludex in #622

v2.4.1 (2024-11-21)

  • Allow new context argument of metric instrument methods to be passed positionally by @alexmojaki in #616

v2.4.0 (2024-11-20)

  • Support logfire.instrument without arguments by @Kludex in #607
  • Handle internal errors in create_json_schema by @alexmojaki in #613
  • Handle errors in auto-tracing better by @alexmojaki in #610

v2.3.0 (2024-11-14)

  • Respect repr on fields when logging a dataclass by @dmontagu in #592
  • Allow extract_args to be an iterable of argument names by @alexmojaki in #570
  • Make metric instrument methods compatible with older OTel versions by @alexmojaki in #600
  • Add span links by @Kludex in #587

v2.2.1 (2024-11-13)

  • Ignore trivial/empty functions in auto-tracing by @alexmojaki in #596
  • Handle missing attributes in _custom_object_schema by @alexmojaki in #597
  • Let user know what they should install for integrations by @Kludex in #593

v2.2.0 (2024-11-13)

  • Allow instrumenting a single httpx client by @alexmojaki in #575
  • Log LLM tool call for streamed response by @jackmpcollins in #545

v2.1.2 (2024-11-04)

  • Check .logfire for creds to respect 'if-token-present' setting by @sydney-runkle in #561

v2.1.1 (2024-10-31)

  • Use functools.wraps in @logfire.instrument by @alexmojaki in #562
  • Set logfire.code.work_dir resource attribute whenever other code source attributes are present by @alexmojaki in #563
  • Don’t scrub logfire.logger_name by @alexmojaki in #564

v2.1.0 (2024-10-30)

  • Add ASGI & WSGI instrument methods by @Kludex in #324
  • Add logfire.work_dir resource attribute by @Kludex in #532
  • Add logfire.configure(environment=...) by @Kludex in #557
  • Show message from API backend when checking token fails by @alexmojaki in #559

v2.0.0 (2024-10-30)

  • @logfire.instrument() no longer needs source code by @alexmojaki in #543. BREAKING CHANGES caused by this:
    • Functions decorated with @logfire.instrument() and functions nested within them can now be auto-traced unlike before. Use @logfire.no_auto_trace anywhere on functions you want to exclude, especially the instrumented function.
    • Decorated async generator functions won’t support the .asend method properly - the generator will only receive None. But instrument shouldn’t be used on generators anyway unless the generator is being used as a context manager, so new warnings about this have been added. See https://logfire.pydantic.dev/docs/guides/advanced/generators/#using-logfireinstrument

v1.3.2 (2024-10-29)

  • Handle NonRecordingSpans for fastapi arguments by @alexmojaki in #551
  • Preserve docstrings in auto-tracing by @alexmojaki in #550

v1.3.1 (2024-10-28)

  • Handle null fastapi route.name and route.operation_id by @alexmojaki in #547

v1.3.0 (2024-10-24)

  • Add Code Source links by @Kludex in #451 and #505
  • Add fastapi arguments attributes directly on the root OTel span, remove use_opentelemetry_instrumentation kwarg by @alexmojaki in #509
  • Allow setting tags on logfire spans by @AdolfoVillalobos in #497
  • Add logger name to LogfireLoggingHandler spans by @samuelcolvin in #534
  • Format None as None instead of null in messages by @alexmojaki in #525
  • Use PYTEST_VERSION instead of PYTEST_CURRENT_TEST to detect logfire.configure() being called within a pytest run but outside any test by @Kludex in #531

v1.2.0 (2024-10-17)

  • Add local parameter to logfire.configure() by @alexmojaki in #508

v1.1.0 (2024-10-14)

v1.0.1 (2024-10-02)

v1.0.0 (2024-09-30)

v0.55.0 (2024-09-27)

v0.54.0 (2024-09-26)

v0.53.0 (2024-09-17)

v0.52.0 (2024-09-05)

v0.51.0 (2024-08-22)

BREAKING CHANGES

Other fixes

v0.50.1 (2024-08-06)

(Previously released as v0.50.0, then yanked due to https://github.com/pydantic/logfire/issues/367)

  • BREAKING CHANGES: Separate sending to Logfire from using standard OTEL environment variables by @alexmojaki in https://github.com/pydantic/logfire/pull/351. See https://logfire.pydantic.dev/docs/guides/advanced/alternative_backends/ for details. Highlights:
    • OTEL_EXPORTER_OTLP_ENDPOINT is no longer just an alternative to LOGFIRE_BASE_URL. Setting OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_EXPORTER_OTLP_TRACES_ENDPOINT, and/or OTEL_EXPORTER_OTLP_METRICS_ENDPOINT will set up appropriate exporters in addition to sending to Logfire, which must be turned off separately if desired. These are basic exporters relying on OTEL defaults. In particular they don’t use our custom retrying logic.
    • LOGFIRE_BASE_URL / logfire.configure(base_url=...) is now only intended for actual alternative Logfire backends, which are currently only available to Logfire developers, and unlike OTEL_EXPORTER_OTLP_ENDPOINT requires authenticating with Logfire.
    • Pending spans are only sent to logfire-specific exporters.
  • Add capture_statement to Redis instrumentation by @Kludex in https://github.com/pydantic/logfire/pull/355

v0.49.1 (2024-08-05)

v0.49.0 (2024-08-05)

v0.48.1 (2024-07-29)

v0.48.0 (2024-07-24)

v0.47.0 (2024-07-20)

v0.46.1 (2024-07-05)

v0.46.0 (2024-07-05)

v0.45.1 (2024-07-01)

v0.45.0 (2024-06-29)

v0.44.0 (2024-06-26)

v0.43.0 (2024-06-24)

v0.42.0 (2024-06-11)

v0.41.0 (2024-06-06)

v0.40.0 (2024-06-04)

  • BREAKING CHANGE: The processors parameter of logfire.configure() has been replaced by additional_span_processors. Passing processors will raise an error. Unlike processors, setting additional_span_processors to an empty sequence will not disable the default span processor which exports to Logfire. To do that, pass send_to_logfire=False. Similarly metric_readers has been replaced by additional_metric_reader. By @alexmojaki in https://github.com/pydantic/logfire/pull/233
  • Improve error raised when opentelemetry.instrumentation.django is not installed by @deepakdinesh1123 in https://github.com/pydantic/logfire/pull/231
  • Handle internal errors by @alexmojaki in https://github.com/pydantic/logfire/pull/232

v0.39.0 (2024-06-03)

Add new methods for easier integration in https://github.com/pydantic/logfire/pull/207:

  • instrument_flask
  • instrument_starlette
  • instrument_aiohttp_client
  • instrument_sqlalchemy
  • instrument_pymongo
  • instrument_redis

v0.38.0 (2024-05-31)

BREAKING CHANGE: Calling logfire.info, logfire.error, logfire.span etc. will no longer automatically configure logfire if it hasn’t been configured already. Instead it will emit a warning and not log anything. Users must call logfire.configure() before they want logging to actually start, even if they don’t pass any arguments to configure and all configuration is done by environment variables. Using integrations like logfire.instrument_fastapi() before calling configure will also emit a warning but it will still set up the instrumentation, although it will not log anything until configure is called.

v0.37.0 (2024-05-29)

v0.36.1 (2024-05-27)

v0.36.0 (2024-05-27)

v0.35.0 (2024-05-21)

v0.34.0 (2024-05-21)

v0.33.0 (2024-05-18)

v0.32.1 (2024-05-15)

v0.32.0 (2024-05-14)

v0.31.0 (2024-05-13)

v0.30.0 (2024-05-06)

v0.29.0 (2024-05-03)

v0.28.3 (2024-05-02)

v0.28.2 (2024-05-02)

v0.28.1 (2024-05-01)

v0.28.0 (2024-04-30)

v0.27.0 (2024-04-30)

First release from new repo!