Skip to content

Latest commit

 

History

History
474 lines (347 loc) · 31.9 KB

CHANGELOG.md

File metadata and controls

474 lines (347 loc) · 31.9 KB

Release Notes

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)

  • Fix error in checking for generators in auto-tracing by @alexmojaki in #498
  • Support 'if-token-present' for env var 'LOGFIRE_SEND_TO_LOGFIRE' by @sydney-runkle in #488
  • Use Compression.Gzip by @Kludex in #491

v1.0.1 (2024-10-02)

  • Fix warning about unregistered MetricReaders by @alexmojaki in #465

v1.0.0 (2024-09-30)

  • Upgrade DeprecationWarnings to UserWarnings by @alexmojaki in #458
  • Update query client APIs by @dmontagu in #454

v0.55.0 (2024-09-27)

  • Replace pydantic_plugin in logfire.configure() with logfire.instrument_pydantic() by @alexmojaki in #453
  • Keep METRICS_PREFERRED_TEMPORALITY private by @alexmojaki in #456
  • Use SeededRandomIdGenerator by default to prevent interference from random.seed by @alexmojaki in #457

v0.54.0 (2024-09-26)

  • Changes in logfire.configure():
    • Remove show_summary and fast_shutdown by @alexmojaki in #431
    • Move base_url, id_generator, and ns_timestamp_generator parameters into advanced: AdvancedOptions by @alexmojaki in #432
    • Add metrics parameter by @alexmojaki in #444
  • Remove default min_duration for install_auto_tracing by @alexmojaki in #446

v0.53.0 (2024-09-17)

  • Tail sampling by @alexmojaki in #407
  • Use OTEL scopes better, especially instead of tags by @alexmojaki in #420
  • Deprecate project_name in logfire.configure(), remove old kwargs from signature by @alexmojaki in #428
  • Fix websocket span messages by @alexmojaki in #426
  • Remove warning about attribute/variable name conflicts in f-string magic by @alexmojaki in #418

v0.52.0 (2024-09-05)

  • Handle FastAPI update with SolvedDependencies by @alexmojaki in #415
  • Add experimental client for the Logfire Query API by @dmontagu in #405
  • Remove default_span_processor parameter from configure by @alexmojaki in #400
  • Remove custom_scope_suffix parameter of Logfire.log by @alexmojaki in #399
  • Add missing service_version field to _LogfireConfigData so that it gets copied into subprocesses by @alexmojaki in #401

v0.51.0 (2024-08-22)

BREAKING CHANGES

  • System metrics are no longer collected by default when the correct dependency is installed. Use logfire.instrument_system_metrics() to enable system metrics collection. If you are simply using the old 'Basic System Metrics' dashboard, then no further code changes are required, but that dashboard will no longer work properly and you should create a new dashboard from the template named 'Basic System Metrics (Logfire)'. If you were using other collected metrics, see the documentation for how to collect those. By @alexmojaki in #373
  • Stop collecting package versions by @alexmojaki in #387
  • Don't auto-trace generators by @alexmojaki in #386
  • Disable ASGI send/receive spans by default by @alexmojaki in #371

Other fixes

  • Add py.typed file to logfire-api by @jackmpcollins in #379
  • Check LambdaRuntimeClient before logging tracebacks in _ensure_flush_after_aws_lambda by @alexmojaki in #388

v0.50.1 (2024-08-06)

(Previously released as v0.50.0, then yanked due to #367)

  • BREAKING CHANGES: Separate sending to Logfire from using standard OTEL environment variables by @alexmojaki in #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 #355

v0.49.1 (2024-08-05)

  • Add missing return on instrument methods by @Kludex in #360
  • Add logfire.exception() to logfire-api by @Kludex in #358
  • Remove TypeAlias from code source by @Kludex in #359
  • Turn ParamSpec non-private by @Kludex in #361

v0.49.0 (2024-08-05)

  • Add logfire.instrument_mysql() by @aditkumar72 in #341
  • Set OTEL status description when logging exceptions by @alexmojaki in #348
  • Switch UpDownCounters to cumulative aggregation temporality by @alexmojaki in #347
  • Log more info about internal errors by @alexmojaki in #346

v0.48.1 (2024-07-29)

  • Handle newer opentelemetry versions by @alexmojaki in #337
  • More lenient handling of loguru message mismatch and better warnings by @alexmojaki in #338
  • Add better type hints for HTTPX and AsyncPG by @Kludex in #342
  • Handle setuptools changing sys.path for importing packaging.version by @alexmojaki in #344

v0.48.0 (2024-07-24)

  • Add instrument_celery method by @Kludex in #322
  • capture_headers by @alexmojaki in #318
  • Handle message formatting errors by @alexmojaki in #329
  • Handle logging None with loguru by @alexmojaki in #331

v0.47.0 (2024-07-20)

  • Fix recursive logging from OTEL's BatchSpanProcessor by @alexmojaki in #306
  • Set sqlalchemy 'connect' spans to debug level by @alexmojaki in #307
  • Add type hints to instrument methods by @Kludex in #320
  • Handle older versions of anthropic by @alexmojaki in #316
  • Update dependencies, handle change in importlib by @alexmojaki in #323
  • Summarize db.statement in message by @alexmojaki in #308
  • Handle and test other OpenAI/Anthropic client methods by @alexmojaki in #312

v0.46.1 (2024-07-05)

  • Fix release process for logfire-api by @Kludex in #303

v0.46.0 (2024-07-05)

  • Add logfire-api by @Kludex in #268
  • Use exponential histogram buckets by @alexmojaki in #282
  • Add attribute noting details of scrubbed values by @alexmojaki in #278
  • Ensure force_flush at end of AWS Lambda invocation by @alexmojaki in #296

v0.45.1 (2024-07-01)

  • Fix ignore no config warning message by @ba1mn in #292
  • Ensure StaticFiles doesn't break instrument_fastapi by @alexmojaki in #294

v0.45.0 (2024-06-29)

  • Add scrubbing: ScrubbingOptions | False parameter to logfire.configure, replacing scrubbing_patterns and scrubbing_callback by @alexmojaki in #283
  • Fix and test unmapped SQLModels by @alexmojaki in #286
  • Optimize collect_package_info by @alexmojaki in #285

v0.44.0 (2024-06-26)

  • Prevent 'dictionary changed size during iteration' error in install_auto_tracing by @alexmojaki in #277
  • suppress_instrumentation when retrying exports by @alexmojaki in #279
  • Log async stack in log_slow_async_callbacks by @alexmojaki in #280

v0.43.0 (2024-06-24)

  • BREAKING CHANGE: Remove default for modules parameter of install_auto_tracing by @alexmojaki in #261
  • BREAKING CHANGE: Check if logfire token is valid in separate thread, so logfire.configure won't block startup and will no longer raise an exception for an invalid token, by @alexmojaki in #274
  • Remove logfire_api_session parameter from logfire.configure by @alexmojaki in #272
  • Default the log level to error if the status code is error, and vice versa by @alexmojaki in #269
  • Avoid importing gitpython by @alexmojaki in #260
  • Only delete files on logfire clean by @Kludex in #267
  • Bug fix: Logging arguments of a request to a FastAPI sub app by @sneakyPad in #259
  • Fix query params not being in message by @alexmojaki in #271
  • Replace 'Redacted' with 'Scrubbed' in 'Redacted due to...' by @alexmojaki in #273

v0.42.0 (2024-06-11)

  • Improved handling of request errors when exporting by @alexmojaki in #252
  • ignore_no_config setting added to pyproject.toml by @deepakdinesh1123 in #254
  • Make logfire whoami respect the LOGFIRE_TOKEN env var by @alexmojaki in #256

v0.41.0 (2024-06-06)

  • Fix backfill command by @alexmojaki in #243
  • Update Anthropic to use tools that are no longer in beta by @willbakst in #249
    • Anthropic instrumentation now requires anthropic>=0.27.0

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 #233
  • Improve error raised when opentelemetry.instrumentation.django is not installed by @deepakdinesh1123 in #231
  • Handle internal errors by @alexmojaki in #232

v0.39.0 (2024-06-03)

Add new methods for easier integration in #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)

  • Add logfire.suppress_instrumentation context manager, silence urllib3 debug logs from exporting by @jlondonobo in #197

v0.36.1 (2024-05-27)

  • Fix structlog import by @alexmojaki in #217

v0.36.0 (2024-05-27)

  • Allow passing OTEL kwargs through instrument_fastapi by @alexmojaki in #205
  • Retry connection errors by @alexmojaki in #214

v0.35.0 (2024-05-21)

  • Add logfire.instrument_requests() by @tlpinney in #196
  • Add logfire.instrument_httpx() by @tlpinney in #198
  • Add logfire.instrument_django() by @inspirsmith in #200

v0.34.0 (2024-05-21)

  • Allow instrumenting OpenAI/Anthropic client classes or modules by @alexmojaki in #191

v0.33.0 (2024-05-18)

  • Fix logging integrations with non-string messages by @alexmojaki in #179
  • Anthropic instrumentation by @willbakst in #181

v0.32.1 (2024-05-15)

  • Add 'executing' version to 'logfire info' output by @alexmojaki in #180
  • Don't use include_url with Pydantic's V1 ValidationError by @Kludex in #184

v0.32.0 (2024-05-14)

  • Don't scrub spans from OpenAI integration by @alexmojaki in #173
  • Convert FastAPI arguments log to span, don't set to debug by default by @alexmojaki in #164
  • Raise an exception when Pydantic plugin is enabled on Pydantic <2.5.0 by @bossenti in #160
  • Do not require project name on logfire projects use command by @Kludex in #177

v0.31.0 (2024-05-13)

  • Improve error when opentelemetry-instrumentation-fastapi is missing by @Kludex in #143
  • Set send_to_logfire to False when running under Pytest by @Kludex in #154
  • Add logfire.metric_gauge() by @Kludex in #153
  • Use stack_info instead of stack_offset by @Kludex in #137
  • Fix JSON encoding/schema of pydantic v1 models by @alexmojaki in #163
  • Handle intermediate logging/loguru levels by @alexmojaki in #162
  • Add exception on console by @Kludex in #168
  • f-string magic by @alexmojaki in #151

v0.30.0 (2024-05-06)

  • Close spans when process shuts down before the exporter shuts down and drops them by @alexmojaki in #108
  • add psycopg in OTEL_PACKAGES and optional-dependencies by @Elkiwa in #115
  • [PYD-877] Log OpenAI streaming response at the end instead of opening a span and attaching context in a generator that may not finish by @alexmojaki in #107
  • Increase minimum typing-extensions version by @Kludex in #129
  • Add note about creating write tokens when user is not authenticated by @Kludex in #127
  • Make pip install command printed by 'logfire inspect' easy to copy by @alexmojaki in #130

v0.29.0 (2024-05-03)

  • Add log level on on_start for ASGI send and receive messages by @Kludex in #94
  • Support a dataclass type as an argument by @dmontagu in #100
  • Add min_log_level to console options by @Kludex in #95
  • Improve the OpenAI integration by @Kludex in #104

v0.28.3 (2024-05-02)

  • Fix pydantic plugin for cloudpickle by @alexmojaki in #86
  • Handle unloaded SQLAlchemy fields in JSON schema by @alexmojaki in #92

v0.28.2 (2024-05-02)

  • Fix OpenAI streaming empty chunk error by @hramezani in #69
  • Update pyproject.toml to include logfire in sdist build target by @syniex in #51
  • Recommend opentelemetry-instrumentation-sklearn on scikit-learn instead of sklearn by @Kludex in #75

v0.28.1 (2024-05-01)

  • Don't scrub 'author' by @alexmojaki in #55
  • Check if object is SQLAlchemy before dataclass by @Kludex in #67

v0.28.0 (2024-04-30)

  • Add logfire.instrument_asyncpg() by @alexmojaki in #44

v0.27.0 (2024-04-30)

First release from new repo!

  • Update README by @Kludex in #2
  • Add linter & pipeline by @Kludex in #1
  • Use Python 3.8 for pipeline by @Kludex in #3
  • Use Rye instead of Poetry by @Kludex in #5
  • Add test suite by @Kludex in #6
  • Add custom PyPI by @Kludex in #7
  • Add release job by @Kludex in #8
  • Install rye on release job by @Kludex in #9
  • Add latest monorepo changes by @Kludex in #10
  • Add Python 3.12 to CI by @hramezani in #11
  • improve readme and related faff by @samuelcolvin in #12
  • CF pages docs build by @samuelcolvin in #14
  • Create alert docs by @Kludex in #15
  • improve the readme and contributing guide by @samuelcolvin in #16
  • Add classifiers by @hramezani in #17
  • tell rye to use uv by @samuelcolvin in #19
  • Adding docs for instrument_openai by @samuelcolvin in #18
  • Live view docs by @samuelcolvin in #20
  • Add logfire info and issue templates by @samuelcolvin in #22
  • Add GitHub discussions to help page, remove "login", show source link by @samuelcolvin in #23
  • setup coverage by @samuelcolvin in #24
  • improve coverage by @samuelcolvin in #25
  • Write token docs (#2244) by @Kludex in #27
  • add direct connect docs by @davidhewitt in #26
  • Add dashboard docs by @Kludex in #28
  • Add SQL Explore docs by @Kludex in #29
  • Make the psycopg2 docs runnable as is by @Kludex in #31
  • Add Rye to installation by @Kludex in #33
  • Apply Logfire brand colors by @Kludex in #32
  • logfire.instrument_psycopg() function by @alexmojaki in #30
  • Handle recursive logging from OTEL by @alexmojaki in #35
  • Improve MongoDB docs by @Kludex in #34
  • Improve colors by @dmontagu in #38
  • Rename files to not have numeric prefixes by @dmontagu in #39
  • Handle cyclic references in JSON encoding and schema by @alexmojaki in #37
  • Ensure logfire.testing doesn't depend on pydantic and eval_type_backport by @alexmojaki in #40
  • Allow using pydantic plugin with models defined before calling logfire.configure by @alexmojaki in #36