{"id":27880870,"url":"https://github.com/atomicgo/chslog","last_synced_at":"2025-05-05T04:39:03.809Z","repository":{"id":185711531,"uuid":"673983296","full_name":"atomicgo/chslog","owner":"atomicgo","description":"♻️ Automatically change the underlying slog handler, based on the environment.","archived":false,"fork":false,"pushed_at":"2024-08-08T17:04:04.000Z","size":30,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-08-08T19:59:32.288Z","etag":null,"topics":["atomicgo","go","golang","golang-library"],"latest_commit_sha":null,"homepage":"https://atomicgo.dev","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/atomicgo.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},"funding":{"github":["MarvinJWendt"]}},"created_at":"2023-08-02T21:54:22.000Z","updated_at":"2024-08-08T17:04:07.000Z","dependencies_parsed_at":null,"dependency_job_id":"fb2ed0a9-6e36-42c1-988b-78035b5c23bc","html_url":"https://github.com/atomicgo/chslog","commit_stats":null,"previous_names":["atomicgo/chslog"],"tags_count":1,"template":false,"template_full_name":"atomicgo/template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomicgo%2Fchslog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomicgo%2Fchslog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomicgo%2Fchslog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomicgo%2Fchslog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atomicgo","download_url":"https://codeload.github.com/atomicgo/chslog/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252442480,"owners_count":21748448,"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":["atomicgo","go","golang","golang-library"],"created_at":"2025-05-05T04:39:03.322Z","updated_at":"2025-05-05T04:39:03.795Z","avatar_url":"https://github.com/atomicgo.png","language":"Go","funding_links":["https://github.com/sponsors/MarvinJWendt"],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eAtomicGo | chslog\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://img.shields.io/endpoint?url=https%3A%2F%2Fatomicgo.dev%2Fapi%2Fshields%2Fchslog\u0026style=flat-square\" alt=\"Downloads\"\u003e\n\n\u003ca href=\"https://github.com/atomicgo/chslog/releases\"\u003e\n\u003cimg src=\"https://img.shields.io/github/v/release/atomicgo/chslog?style=flat-square\" alt=\"Latest Release\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://codecov.io/gh/atomicgo/chslog\" target=\"_blank\"\u003e\n\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/atomicgo/chslog/go.yml?style=flat-square\" alt=\"Tests\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://codecov.io/gh/atomicgo/chslog\" target=\"_blank\"\u003e\n\u003cimg src=\"https://img.shields.io/codecov/c/gh/atomicgo/chslog?color=magenta\u0026logo=codecov\u0026style=flat-square\" alt=\"Coverage\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://codecov.io/gh/atomicgo/chslog\"\u003e\n\u003c!-- unittestcount:start --\u003e\u003cimg src=\"https://img.shields.io/badge/Unit_Tests-0-magenta?style=flat-square\" alt=\"Unit test count\"\u003e\u003c!-- unittestcount:end --\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://opensource.org/licenses/MIT\" target=\"_blank\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square\" alt=\"License: MIT\"\u003e\n\u003c/a\u003e\n  \n\u003ca href=\"https://goreportcard.com/report/github.com/atomicgo/chslog\" target=\"_blank\"\u003e\n\u003cimg src=\"https://goreportcard.com/badge/github.com/atomicgo/chslog?style=flat-square\" alt=\"Go report\"\u003e\n\u003c/a\u003e   \n\n\u003c/p\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n\u003cstrong\u003e\u003ca href=\"https://pkg.go.dev/atomicgo.dev/chslog#section-documentation\" target=\"_blank\"\u003eDocumentation\u003c/a\u003e\u003c/strong\u003e\n|\n\u003cstrong\u003e\u003ca href=\"https://github.com/atomicgo/atomicgo/blob/main/CONTRIBUTING.md\" target=\"_blank\"\u003eContributing\u003c/a\u003e\u003c/strong\u003e\n|\n\u003cstrong\u003e\u003ca href=\"https://github.com/atomicgo/atomicgo/blob/main/CODE_OF_CONDUCT.md\" target=\"_blank\"\u003eCode of Conduct\u003c/a\u003e\u003c/strong\u003e\n\u003c/p\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/atomicgo/atomicgo/main/assets/header.png\" alt=\"AtomicGo\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/p\u003e\n\u003ch3  align=\"center\"\u003e\u003cpre\u003ego get atomicgo.dev/chslog\u003c/pre\u003e\u003c/h3\u003e\n\u003cp align=\"center\"\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/p\u003e\n\n\u003c!-- gomarkdoc:embed:start --\u003e\n\n\u003c!-- Code generated by gomarkdoc. DO NOT EDIT --\u003e\n\n# chslog\n\n```go\nimport \"atomicgo.dev/chslog\"\n```\n\nPackage chslog provides a simple way to set up a logger that automatically chooses between a production and a development logger.\n\nExample:\n\n```\nfunc main() {\n\t// Uses a text logger in development and a JSON logger in production.\n\tprodHandler := slog.NewJSONHandler(os.Stdout, nil)\n\tdevHandler := slog.NewTextHandler(os.Stdout, nil)\n\n\thandler := slogch.Choose(prodHandler, devHandler)\n\tlogger := slog.New(handler)\n\n\tlogger.Info(\"Hello, World!\", \"foo\", \"bar\")\n\t// Prod: {\"time\":\"2023-08-03T01:31:27.6681464+02:00\",\"level\":\"INFO\",\"msg\":\"Hello, World!\",\"foo\":\"bar\"}\n\t// Dev:  time=2023-08-03T01:30:23.438+02:00 level=INFO msg=\"Hello, World!\" foo=bar\n}\n```\n\n## Index\n\n- [Variables](\u003c#variables\u003e)\n- [func Choose\\(prodHandler, devHandler slog.Handler\\) slog.Handler](\u003c#Choose\u003e)\n\n\n## Variables\n\n\u003ca name=\"Conditions\"\u003e\u003c/a\u003eConditions holds the environment conditions that are checked. By default, it checks for the most common environments with https://atomicgo.dev/isprod. See https://pkg.go.dev/atomicgo.dev/isprod#Conditions for more info, on how to configure them \\(if needed\\).\n\n```go\nvar Conditions = isprod.DefaultConditions\n```\n\n\u003ca name=\"Choose\"\u003e\u003c/a\u003e\n## func [Choose](\u003chttps://github.com/atomicgo/chslog/blob/main/slogch.go#L14\u003e)\n\n```go\nfunc Choose(prodHandler, devHandler slog.Handler) slog.Handler\n```\n\nChoose automatically chooses between prodHandler and devHandler.\n\n\u003cdetails\u003e\u003csummary\u003eExample\u003c/summary\u003e\n\u003cp\u003e\n\n\n\n```go\npackage main\n\nimport (\n\tslogch \"atomicgo.dev/chslog\"\n\t\"log/slog\"\n\t\"os\"\n)\n\nfunc main() {\n\t// Uses a text logger in development and a JSON logger in production.\n\tprodHandler := slog.NewJSONHandler(os.Stdout, nil)\n\tdevHandler := slog.NewTextHandler(os.Stdout, nil)\n\n\thandler := slogch.Choose(prodHandler, devHandler)\n\tlogger := slog.New(handler)\n\n\tlogger.Info(\"Hello, World!\", \"foo\", \"bar\")\n}\n```\n\n\u003c/p\u003e\n\u003c/details\u003e\n\nGenerated by [gomarkdoc](\u003chttps://github.com/princjef/gomarkdoc\u003e)\n\n\n\u003c!-- gomarkdoc:embed:end --\u003e\n\n---\n\n\u003e [AtomicGo.dev](https://atomicgo.dev) \u0026nbsp;\u0026middot;\u0026nbsp;\n\u003e with ❤️ by [@MarvinJWendt](https://github.com/MarvinJWendt) |\n\u003e [MarvinJWendt.com](https://marvinjwendt.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatomicgo%2Fchslog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatomicgo%2Fchslog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatomicgo%2Fchslog/lists"}