Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/s4s7/soglog

slog initializer for minimalist (Golang, Opentelemetry, Google Cloud)
https://github.com/s4s7/soglog

cloudlogging cloudtrace golang google-cloud opentelemetry slog

Last synced: 4 months ago
JSON representation

slog initializer for minimalist (Golang, Opentelemetry, Google Cloud)

Awesome Lists containing this project

README

        


image


# Minimalist Logger
based on slog with Otel for GoogleCloud
![Go Version](https://img.shields.io/badge/Go-%3E%3D%201.21-%23007d9c)
[![GoDoc](https://godoc.org/github.com/samber/slog-multi?status.svg)](https://pkg.go.dev/github.com/s4s7/soglog)

sog stands for **S**tructured **O**tel **G**oogleCloud, inspired by [clog](https://github.com/nownabe/clog).
Special thanks to nownabe.


## Key Features
1. **When the log level is set to error, a stack trace will be displayed.**

| | |
|-------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| image | The display of stack traces can be easily controlled at initialization.
For example, you can configure it to hide stack traces locally, while enabling them on Google Cloud. |

2. **You can add additional information from the context (ctx) to labels.**

| | |
|-------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| image | Insert code that corresponds to the following type during initialization
``type LabelFieldInjector func(ctx context.Context) (key, value string, found bool)`` |

3. **You can initialize slog with a one-liner at server startup, allowing you to use its default slog methods throughout your application**

```golang
slog.SetDefault(slog.New(soglog.NewCloudLoggingHandler("your-project-id", &soglog.Options{IsStackTraced: true, LabelFieldInjector: yourLabelFieldInjector})
```

## Note
soglog is strictly designed within the functionalities of the slog to support cloud logging. Therefore, soglog supports only 4 log levels: `Debug`, `Info`, `Warn`, and `Error`.