{"id":19615956,"url":"https://github.com/vgarvardt/slogex","last_synced_at":"2025-04-28T02:31:48.601Z","repository":{"id":215683461,"uuid":"739529030","full_name":"vgarvardt/slogex","owner":"vgarvardt","description":"Golang log/slog extensions","archived":false,"fork":false,"pushed_at":"2025-04-01T16:44:01.000Z","size":102,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-26T05:48:08.918Z","etag":null,"topics":["extensions","go","golang","logging","testing"],"latest_commit_sha":null,"homepage":"","language":"Go","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/vgarvardt.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,"publiccode":null,"codemeta":null}},"created_at":"2024-01-05T19:37:02.000Z","updated_at":"2025-04-01T16:44:04.000Z","dependencies_parsed_at":"2024-05-13T11:24:19.689Z","dependency_job_id":"62d0d920-7f67-4278-9faa-8967b808879d","html_url":"https://github.com/vgarvardt/slogex","commit_stats":null,"previous_names":["vgarvardt/slogex"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vgarvardt%2Fslogex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vgarvardt%2Fslogex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vgarvardt%2Fslogex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vgarvardt%2Fslogex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vgarvardt","download_url":"https://codeload.github.com/vgarvardt/slogex/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251238119,"owners_count":21557405,"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":["extensions","go","golang","logging","testing"],"created_at":"2024-11-11T10:59:16.442Z","updated_at":"2025-04-28T02:31:48.356Z","avatar_url":"https://github.com/vgarvardt.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# slogex\n\n[![GoDev](https://img.shields.io/static/v1?label=godev\u0026message=reference\u0026color=00add8)](https://pkg.go.dev/github.com/vgarvardt/slogex)\n[![Coverage Status](https://codecov.io/gh/vgarvardt/slogex/branch/master/graph/badge.svg)](https://codecov.io/gh/vgarvardt/slogex)\n[![ReportCard](https://goreportcard.com/badge/github.com/vgarvardt/slogex)](https://goreportcard.com/report/github.com/vgarvardt/slogex)\n[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/license/apache-2-0/)\n\nCollection of Golang `log/slog` logger extensions and related wrappers.\n\n## Extensions\n\n- [`github.com/vgarvardt/slogex/observer`](#githubcomvgarvardtslogexobserver) - `slog.Handler` implementation that keeps\n  log records in memory. Useful for applications that want to test log output. Heavily inspired\n  by `go.uber.org/zap/zaptest/observer`.\n- [`github.com/vgarvardt/slogex/fxlogger`](#githubcomvgarvardtslogexfxlogger) - `go.uber.org/fx/fxevent.Logger`\n  implementation.\n\n## Examples\n\n### `github.com/vgarvardt/slogex/observer`\n\n```go\npackage something_test\n\nimport (\n    \"log/slog\"\n    \"testing\"\n\n    \"github.com/vgarvardt/slogex/observer\"\n)\n\nfunc TestSomeLogs(t *testing.T) {\n    handler, logs := observer.New(nil)\n\n    logger := slog.New(handler).With(slog.Int(\"i\", 1))\n    logger.Info(\"foo\")\n\n    loggerRecords := logs.All()\n    for _, r := range loggerRecords {\n        t.Log(r.Record.Level, r.Record.Message, r.Attrs)\n    }\n}\n\n```\n\n## `github.com/vgarvardt/slogex/fxlogger`\n\n```go\npackage main\n\nimport (\n    \"log/slog\"\n\n    \"go.uber.org/fx\"\n    \"go.uber.org/fx/fxevent\"\n\n    \"github.com/vgarvardt/slogex/fxlogger\"\n)\n\nfunc FxOptions() []fx.Option {\n    return []fx.Option{\n        fx.WithLogger(func(logger *slog.Logger) fxevent.Logger {\n            return \u0026fxlogger.Logger{\n                Logger: logger.With(slog.String(\"source\", \"fx\")),\n            }\n        }),\n    }\n}\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvgarvardt%2Fslogex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvgarvardt%2Fslogex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvgarvardt%2Fslogex/lists"}