Skillshub golang-logging

Standards for structured logging and observability in Golang. Use when adding structured logging or tracing to Go services. (triggers: go.mod, pkg/logger/**, logging, slog, structured logging, zap)

install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/HoangNguyen0403/agent-skills-standard/golang-logging" ~/.claude/skills/comeonoliver-skillshub-golang-logging && rm -rf "$T"
manifest: skills/HoangNguyen0403/agent-skills-standard/golang-logging/SKILL.md
source content

Golang Logging Standards

Priority: P1 (STANDARD)

Principles

  • Structured Logging: Use JSON or structured text. Readable by machines and humans.
  • Leveled Logging: Debug, Info, Warn, Error.
  • Contextual: Include correlation IDs (TraceID, RequestID) in logs.
  • No
    log.Fatal
    : Avoid terminating app inside libraries. Return error instead. Only
    main
    should exit.

Libraries

  • log/slog
    (Recommended)
    : Stdlib since Go 1.21. Fast, structured, zero-dep.
  • Zap (
    uber-go/zap
    )
    : High performance, good if pre-1.21 or extreme throughput needed.
  • Zerolog: Zero allocation, fast JSON logger.

Guidelines

  • Initialize logger at startup.
  • Inject logger or use a global singleton configured at startup (pragmatic choice).
  • Use
    slog.Attr
    for structured data.

References

Anti-Patterns

  • No fmt.Println in production: Use slog or zap for structured, leveled logging.
  • No log.Fatal in libraries: Return errors; only main() should call os.Exit.
  • No unstructured log strings: Include correlation IDs and structured fields via slog.Attr.