2024-05-14 04:43:47 +00:00
|
|
|
# simplelog
|
|
|
|
|
2024-06-10 09:39:01 +00:00
|
|
|
## Summary
|
|
|
|
|
2024-05-14 04:43:47 +00:00
|
|
|
simplelog is an opinionated logging package designed to facilitate easy and
|
|
|
|
structured logging in Go applications with an absolute minimum of
|
|
|
|
boilerplate.
|
|
|
|
|
|
|
|
The idea is that you can add a single import line which replaces the
|
|
|
|
stdlib `log/slog` default handler, and solve the 90% case for logging.
|
|
|
|
|
2024-06-10 09:39:01 +00:00
|
|
|
## Current Status
|
|
|
|
|
2024-06-14 12:49:21 +00:00
|
|
|
Released v1.0.0 2024-06-14. Works as intended. No known bugs.
|
2024-06-10 09:39:01 +00:00
|
|
|
|
2024-05-14 04:43:47 +00:00
|
|
|
## Features
|
|
|
|
|
2024-06-10 09:39:01 +00:00
|
|
|
- if output is a tty, outputs pretty color logs
|
|
|
|
- if output is not a tty, outputs json
|
|
|
|
- supports delivering each log message via a webhook
|
2024-05-14 04:43:47 +00:00
|
|
|
|
2024-06-14 12:49:21 +00:00
|
|
|
## Planned Features
|
|
|
|
|
|
|
|
- supports delivering logs via tcp RELP (e.g. to remote rsyslog using imrelp)
|
|
|
|
|
2024-05-14 04:43:47 +00:00
|
|
|
## Installation
|
|
|
|
|
|
|
|
To use simplelog, first ensure your project is set up with Go modules:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
go mod init your_project_name
|
|
|
|
```
|
|
|
|
|
|
|
|
Then, add SimpleLog to your project:
|
|
|
|
|
|
|
|
```bash
|
2024-05-22 21:53:57 +00:00
|
|
|
go get sneak.berlin/go/simplelog
|
2024-05-14 04:43:47 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
2024-06-14 12:49:21 +00:00
|
|
|
Below is an example of how to use SimpleLog in a Go application. This
|
|
|
|
example is provided in the form of a `main.go` file, which demonstrates
|
|
|
|
logging at various levels using structured logging syntax.
|
2024-05-14 04:43:47 +00:00
|
|
|
|
|
|
|
```go
|
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"log/slog"
|
2024-05-22 21:53:57 +00:00
|
|
|
_ "sneak.berlin/go/simplelog"
|
2024-05-14 04:43:47 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
|
|
|
|
// log structured data with slog as usual:
|
|
|
|
slog.Info("User login attempt", slog.String("user", "JohnDoe"), slog.Int("attempt", 3))
|
|
|
|
slog.Warn("Configuration mismatch", slog.String("expected", "config.json"), slog.String("found", "config.dev.json"))
|
|
|
|
slog.Error("Failed to save data", slog.String("reason", "permission denied"))
|
|
|
|
}
|
|
|
|
```
|