https://github.com/atomicgo/chslog
♻️ Automatically change the underlying slog handler, based on the environment.
https://github.com/atomicgo/chslog
atomicgo go golang golang-library
Last synced: about 2 months ago
JSON representation
♻️ Automatically change the underlying slog handler, based on the environment.
- Host: GitHub
- URL: https://github.com/atomicgo/chslog
- Owner: atomicgo
- License: mit
- Created: 2023-08-02T21:54:22.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-08T17:04:04.000Z (11 months ago)
- Last Synced: 2024-08-08T19:59:32.288Z (11 months ago)
- Topics: atomicgo, go, golang, golang-library
- Language: Go
- Homepage: https://atomicgo.dev
- Size: 29.3 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
AtomicGo | chslog
---
Documentation
|
Contributing
|
Code of Conduct---
![]()
go get atomicgo.dev/chslog
# chslog
```go
import "atomicgo.dev/chslog"
```Package chslog provides a simple way to set up a logger that automatically chooses between a production and a development logger.
Example:
```
func main() {
// Uses a text logger in development and a JSON logger in production.
prodHandler := slog.NewJSONHandler(os.Stdout, nil)
devHandler := slog.NewTextHandler(os.Stdout, nil)handler := slogch.Choose(prodHandler, devHandler)
logger := slog.New(handler)logger.Info("Hello, World!", "foo", "bar")
// Prod: {"time":"2023-08-03T01:31:27.6681464+02:00","level":"INFO","msg":"Hello, World!","foo":"bar"}
// Dev: time=2023-08-03T01:30:23.438+02:00 level=INFO msg="Hello, World!" foo=bar
}
```## Index
- [Variables](<#variables>)
- [func Choose\(prodHandler, devHandler slog.Handler\) slog.Handler](<#Choose>)## Variables
Conditions 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\).
```go
var Conditions = isprod.DefaultConditions
``````go
func Choose(prodHandler, devHandler slog.Handler) slog.Handler
```Choose automatically chooses between prodHandler and devHandler.
Example
```go
package mainimport (
slogch "atomicgo.dev/chslog"
"log/slog"
"os"
)func main() {
// Uses a text logger in development and a JSON logger in production.
prodHandler := slog.NewJSONHandler(os.Stdout, nil)
devHandler := slog.NewTextHandler(os.Stdout, nil)handler := slogch.Choose(prodHandler, devHandler)
logger := slog.New(handler)logger.Info("Hello, World!", "foo", "bar")
}
```Generated by [gomarkdoc]()
---
> [AtomicGo.dev](https://atomicgo.dev) ·
> with ❤️ by [@MarvinJWendt](https://github.com/MarvinJWendt) |
> [MarvinJWendt.com](https://marvinjwendt.com)