{"id":22725418,"url":"https://github.com/ovotech/natchez-extras","last_synced_at":"2026-01-05T18:14:09.249Z","repository":{"id":37082072,"uuid":"139563150","full_name":"ovotech/natchez-extras","owner":"ovotech","description":"Integrations between Natchez, Doobie, HTTP4s, Log4cats and Datadog. Formerly called effect-utils.","archived":false,"fork":false,"pushed_at":"2024-04-12T10:50:59.000Z","size":1035,"stargazers_count":32,"open_issues_count":7,"forks_count":18,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-04-12T17:23:16.049Z","etag":null,"topics":["company-ovo","datadog","metrics","natchez"],"latest_commit_sha":null,"homepage":"https://ovotech.github.io/natchez-extras/","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ovotech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2018-07-03T09:54:01.000Z","updated_at":"2024-03-19T12:28:58.000Z","dependencies_parsed_at":"2023-02-14T07:30:45.908Z","dependency_job_id":"4ca6346e-8718-4000-97cb-32d9d7ef9a11","html_url":"https://github.com/ovotech/natchez-extras","commit_stats":null,"previous_names":[],"tags_count":66,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ovotech%2Fnatchez-extras","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ovotech%2Fnatchez-extras/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ovotech%2Fnatchez-extras/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ovotech%2Fnatchez-extras/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ovotech","download_url":"https://codeload.github.com/ovotech/natchez-extras/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229089204,"owners_count":18018390,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["company-ovo","datadog","metrics","natchez"],"created_at":"2024-12-10T16:10:40.111Z","updated_at":"2026-01-05T18:14:09.191Z","avatar_url":"https://github.com/ovotech.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Natchez Extras\n\nThis repository consists of a number of additional integrations for [Natchez](https://github.com/tpolecat/natchez),\nprimarily to assist with integrating Natchez \u0026 Datadog. Separate to the Natchez integrations but included here for simplicity\nis a module to send metrics to Datadog over UDP with FS2.\n\n## Cats Effect versions\n\nIf you're using Cats Effect 2.x you should use versions 4.x.x of this library,\nfor Cats Effect 3 use versions 5.0.0 and up.\n\n## http4s dependencies\n\nhttp4s currently has a stable release (`0.23.*`) and a milestone release (`1.0.0-M*`).\nOriginally the modules within this library were moved to depend on `1.0.0-M*`\nwhen ported to Cats Effect 3 but the milestone releases don't guarantee \nbinary compatibility. (See issue #66).\n\nAs such there are two versions of natchez-extras-datadog and natchez-extras-http4s:\n- `natchez-extras-datadog-stable` / `natchez-extras-http4s-stable` which depend on http4s `0.23.*`\n- `natchez-extras-datadog` / `natchez-extras-http4s` which depend on http4s `1.0.0-M*`\n\nIt is recommended that you use the stable variants to avoid binary compatibility issues when\nupgrading http4s but the unstable versions will continue to exist just in case they're relied upon. \n\n## Migration from effect-utils\n\nFor historical reasons prior to 4.0.0 this repository was called `effect-utils`.\nIf you're upgrading your dependencies the renamings are as follows:\n\n```\n\"com.ovoenergy.effect\" % \"datadog-metrics\"  =\u003e \"com.ovoenergy\" % \"natchez-extras-dogstatsd\"\n\"com.ovoenergy.effect\" % \"natchez-datadog\"  =\u003e \"com.ovoenergy\" % \"natchez-extras-datadog-stable\"\n\"com.ovoenergy.effect\" % \"natchez-doobie\"   =\u003e \"com.ovoenergy\" % \"natchez-extras-doobie\"\n\"com.ovoenergy.effect\" % \"natchez-slf4j\"    =\u003e \"com.ovoenergy\" % \"natchez-extras-slf4j\"\n\"com.ovoenergy.effect\" % \"natchez-combine\"  =\u003e \"com.ovoenergy\" % \"natchez-extras-combine\"\n\"com.ovoenergy.effect\" % \"natchez-fs2\"      =\u003e \"com.ovoenergy\" % \"natchez-extras-fs2\"\n\"com.ovoenergy.effect\" % \"natchez-testkit\"  =\u003e \"com.ovoenergy\" % \"natchez-extras-testkit\"\n\"com.ovoenergy.effect\" % \"natchez-http4s\"   =\u003e \"com.ovoenergy\" % \"natchez-extras-http4s-stable\"\n```\n\nOther significant changes are the `Datadog` metrics object being renamed to `Dogstatsd` and the\nmodules having their code moved into a subpackage under `com.ovoenergy.natchez.extras`, for example:\n\n```scala\nimport com.ovoenergy.effect.Combine // effect-utils\nimport com.ovoenergy.natchez.extras.combine.Combine // natchez-extras\n```\n\nThis is to ensure that each module has an isolated package and so can\ndefine, for example, a `syntax` object without affecting anything else.\n\n## Current modules\n\n### [Dogstatsd](https://ovotech.github.io/natchez-extras/docs/)\n![latest version](https://index.scala-lang.org/ovotech/natchez-extras/natchez-extras-dogstatsd/latest.svg)\n\nThis module allows you to send Metrics and Events to the Datadog agent over UDP with FS2.\n\n### [Datadog](https://ovotech.github.io/natchez-extras/docs/natchez-datadog.html)\n![latest version](https://index.scala-lang.org/ovotech/natchez-extras/natchez-extras-datadog-stable/latest.svg)\n\nThis module integrates Natchez with Datadog. It uses HTTP4s and does not depend on the Java Datadog library.\n\n### [Doobie](https://ovotech.github.io/natchez-extras/docs/natchez-doobie.html)\n![latest version](https://index.scala-lang.org/ovotech/natchez-extras/natchez-extras-doobie/latest.svg)\n\nThis module integrates Natchez with Doobie so you can trace which DB queries are being run and for how long.\n\n### [HTTP4S](https://ovotech.github.io/natchez-extras/docs/natchez-http4s.html)\n![latest version](https://index.scala-lang.org/ovotech/natchez-extras/natchez-extras-http4s-stable/latest.svg)\n\nThis module integrates Natchez with the HTTP4S client and provides middleware to trace both inbound and outbound HTTP requests.\nIt aims to be as configurable as possible so can be configured for use with tracing platforms other than Datadog.\n\n### [Sl4fj](https://ovotech.github.io/natchez-extras/docs/natchez-slf4j.html)\n![latest version](https://index.scala-lang.org/ovotech/natchez-extras/natchez-extras-slf4j/latest.svg)\n\nThis module provides an `Slf4j` integration with Natchez that logs whenever spans get started or completed.\nThis is mainly useful when running applications locally or integrating with existing logging platforms.\n\n### [Combine](https://ovotech.github.io/natchez-extras/docs/natchez-combine.html)\n![latest version](https://index.scala-lang.org/ovotech/natchez-extras/natchez-extras-combine/latest.svg)\n\nThis module allows two Natchez `EntryPoint`s to be combined so that they'll both be used. For example\nif you want to log spans with the above Slf4j integration as well as submitting them to Datadog.\n\n### [FS2](https://ovotech.github.io/natchez-extras/docs/natchez-fs2.html)\n![latest version](https://index.scala-lang.org/ovotech/natchez-extras/natchez-extras-fs2/latest.svg)\n\nThis module provides an `AllocatedSpan` that can be manually submitted, for use in FS2 streams\nwhere the `Resource` based model of Natchez isn't a good fit if you want to have one trace per stream item.\n\n### [Testkit](https://ovotech.github.io/natchez-extras/docs/natchez-testkit.html)\n![latest version](https://index.scala-lang.org/ovotech/natchez-extras/natchez-extras-testkit/latest.svg)\n\nThis module provides a `TestEntrypoint` backed by a `Ref` which can be useful in unit tests.\n\n### [Log4cats](https://ovotech.github.io/natchez-extras/docs/natchez-log4cats.html)\n![latest version](https://index.scala-lang.org/ovotech/natchez-extras/natchez-extras-log4cats/latest.svg)\n\nThis module provides a `TracedLogger` for `log4cats` that will automatically add trace \u0026 span IDs\nto your log lines so that they're linked in the Datadog UI.\n\n## Notes for maintainers\n\nTo create a release, push a tag to master of the format `x.y.z`. See the [semantic versioning guide](https://semver.org/)\nfor details of how to choose a version number.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fovotech%2Fnatchez-extras","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fovotech%2Fnatchez-extras","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fovotech%2Fnatchez-extras/lists"}