sane logging defaults for go
Go to file
2026-02-08 09:17:38 -08:00
cmd/example add example script 2024-06-14 05:39:08 -07:00
tools closer to ready 2024-06-10 02:39:01 -07:00
.gitignore ignore binary 2024-06-14 05:39:03 -07:00
console_handler.go fix call stack depth bug to show log location correctly 2024-06-14 05:38:29 -07:00
Dockerfile lint and check fmt on docker build 2024-06-14 05:47:35 -07:00
event.go fmt 2024-06-14 05:47:29 -07:00
go.mod latest 2024-05-22 14:52:20 -07:00
go.sum initial 2024-05-13 21:43:47 -07:00
handler.go latest 2024-05-22 14:52:20 -07:00
json_handler.go fix: replace log.Println with fmt.Fprintln in JSONHandler to prevent deadlock 2026-02-08 09:16:32 -08:00
LICENSE preparing for 1.0 2024-06-14 05:53:22 -07:00
Makefile lint and check fmt on docker build 2024-06-14 05:47:35 -07:00
README.md feat: add RELP handler for reliable log delivery to rsyslog 2026-02-08 09:17:38 -08:00
relp_handler.go feat: add RELP handler for reliable log delivery to rsyslog 2026-02-08 09:17:38 -08:00
simplelog_test.go initial 2024-05-13 21:43:47 -07:00
simplelog.go feat: add RELP handler for reliable log delivery to rsyslog 2026-02-08 09:17:38 -08:00
TODO initial 2024-05-13 21:43:47 -07:00
webhook_handler.go aider: Add Enabled, WithAttrs, and WithGroup methods to WebhookHandler to implement the slog.Handler interface. 2024-05-14 05:00:12 -07:00

simplelog

Summary

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.

Current Status

Released v1.0.0 2024-06-14. Works as intended. No known bugs.

Features

  • 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

RELP Delivery

To deliver logs via RELP to a remote rsyslog server (using imrelp), set the LOGGER_RELP_URL environment variable:

export LOGGER_RELP_URL=tcp://rsyslog.example.com:2514

Messages are formatted as RFC 5424 syslog and delivered reliably with per-message acknowledgement. The connection is established lazily on first log and reconnects automatically on failure.

Installation

To use simplelog, first ensure your project is set up with Go modules:

go mod init your_project_name

Then, add SimpleLog to your project:

go get sneak.berlin/go/simplelog

Usage

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.

package main

import (
	"log/slog"
	_ "sneak.berlin/go/simplelog"
)

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"))
}

License

WTFPL