Logrus

Structured, pluggable logging for Go with a stdlib-compatible API and level-based hooks.

Library
Go
vv1.10.2
25,748stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
86/100Excellent
Development Activity96
Maintenance72
Community76
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
79/100Good
Architecture85
Code Quality92
Innovation72
Learning Curve65

Logrus is a structured logging library for Go that is a drop-in replacement for the standard library’s log package. It lets you attach structured key-value fields to every log line instead of formatting messages by hand, and ships with both a colorized text formatter for local development and a JSON formatter for log aggregation tools like Logstash and Splunk.

The project is explicitly in maintenance mode: its API is stable and widely adopted across the Go ecosystem, but new feature development has stopped in favor of security fixes, bug fixes, and interoperability with Go’s newer structured logging package, log/slog. It remains one of the most widely used logging libraries in Go, with a large hook ecosystem for routing logs to syslog, exception trackers, and other destinations.

What You Get

  • A stdlib-compatible Logger and set of package-level logging functions (Info, Warn, Error, Fatal, Panic, Trace, Debug)
  • Structured fields via WithField/WithFields, letting you attach key-value context instead of formatting strings manually
  • Built-in TextFormatter (colorized for TTYs) and JSONFormatter for machine-parseable log output
  • A Hook interface for firing custom logic per log level, plus built-in hooks for syslog and a Writer for redirecting stdlib log output
  • Seven log levels (Trace through Panic) with per-logger level filtering and IsLevelEnabled checks

Common Use Cases

  • Structured application logging - Backend services attach request IDs, user IDs, and other context fields to every log line for easier querying in log aggregation tools
  • Drop-in replacement for the stdlib logger - Teams migrate existing log.Print-based code to Logrus by swapping the import, gaining structured fields without rewriting call sites
  • Log shipping to external systems - Applications use built-in or custom hooks to forward Error/Fatal/Panic-level entries to exception trackers, syslog, or metrics systems
  • JSON logs for log aggregation - Services running behind Logstash or Splunk switch to JSONFormatter so their log output is directly machine-parseable

Under The Hood

Architecture Logrus centers on two types: Logger, which owns the output writer, formatter, hooks, and level; and Entry, a snapshot of a single log event created via WithField(s) or WithContext and carried through Data map fields (logrus.go, logger.go, entry.go). Package-level functions in exported.go delegate to a singleton std *Logger, giving a convenient global-logger facade over the same instance-based API. Hooks are stored in a LevelHooks map keyed by level (hooks.go) and fired synchronously from entry.log, while output formatting is abstracted behind a single-method Formatter interface (formatter.go) implemented by TextFormatter and JSONFormatter. A sync.Pool recycles Entry objects and a BufferPool interface (buffer_pool.go) recycles byte buffers during formatting, and a mutexWrap (logger.go) serializes writes to Out. The design is a straightforward layered facade — Logger to Entry to Formatter/Hooks — with no dependency injection framework needed given the narrow domain.

Tech Stack The module targets Go 1.23 and keeps its dependency surface minimal: golang.org/x/sys for terminal/TTY detection across platforms, stretchr/testify for assertions in tests, and a small indirect go.yaml.in/yaml/v3 dependency. There’s no web framework, ORM, or database layer since Logrus is a logging library, not an application framework. CI cross-compiles the package for every GOOS/GOARCH pair returned by go tool dist list, runs the test suite with the race detector across three Go versions (stable, oldstable, 1.23.x) on Linux, Windows, and macOS, and additionally verifies compatibility with TinyGo for constrained targets — an unusually broad build matrix for a library of this size.

Code Quality Test coverage is extensive and close in size to the implementation itself — entry_test.go (657 lines) versus entry.go (567), logrus_test.go at 848 lines, and dedicated benchmark files (entry_bench_test.go, logger_bench_test.go, formatter_bench_test.go) alongside the unit tests. CI runs go test -race on every push and PR, and .golangci.yml enables a long list of strict linters — gosec, errorlint, testifylint, unparam, noctx, nilerr, exhaustive, and more — beyond the default set. Error handling favors explicit returned errors (ParseLevel, Hook.Fire) over panics except at the documented Fatal/Panic log levels, which intentionally call os.Exit/panic() as part of their contract. Naming and doc comments consistently use Go’s modern doc-linking syntax ([WithFields], [Entry.Data]), and example_*_test.go files double as runnable, verified documentation.

API Design The public API is deliberately small and mirrors the standard library logger, which is the main reason for its wide adoption — teams can alias log "github.com/sirupsen/logrus" and get structured fields with almost no code changes. WithField/WithFields return a chainable *Entry so context can be built up incrementally before a terminal call like .Info() or .Error() fires the write, and package-level functions (logrus.Info, logrus.WithFields, …) proxy to the same methods on a default instance so single-binary programs never need to construct a Logger explicitly. The tradeoff for that broad compatibility is that the library itself acknowledges, in its own README, that it is now in maintenance mode and that newer libraries (Zerolog, Zap, Apex) offer a more modern structured-logging design; Logrus optimizes for API stability and drop-in compatibility over new capabilities.

Used by 35 apps in this directory

Go
72%
GPL 3.0

1Panel

Devops · Hosting Control Panel · Monitoring

36,721

The only open-source VPS control panel with native AI agent runtime — deploy websites, Docker stacks, and local LLMs from one web interface.

View details
90
Repo Health
76
Technical
68
Dependency
Built with
Go72%
Vue28%
Updated 2 days ago
Go
85%
Apache 2.0

Argo Workflows

Devops · Data Engineering

16,943

The most popular Kubernetes-native workflow engine for orchestrating containerized DAGs, ML pipelines, CI/CD, and parallel batch jobs at scale.

View details
95
Repo Health
90
Technical
68
Dependency
Built with
Go85%
TypeScript11%
Updated yesterday
Go
86%
Apache 2.0

Authelia

Security · Authentication

28,742

OpenID Certified SSO and MFA portal for securing self-hosted web applications behind reverse proxies.

View details
91
Repo Health
81
Technical
77
Dependency
Built with
Go86%
TypeScript12%
Updated today
Python
55%
Other

authentik

Authentication · Security

25,245

The self-hosted Identity Provider that replaces Okta, Auth0, and Entra ID with a unified SSO platform supporting SAML, OAuth2/OIDC, LDAP, RADIUS, and WebAuthn.

View details
92
Repo Health
81
Technical
67
Dependency
Built with
Python55%
TypeScript34%
Updated today
Go
82%
AGPL 3.0

Beta9

Developer Tools · AI Development · Data Engineering

1,762

Run AI workloads at scale with a Pythonic serverless runtime that handles GPU inference, background jobs, and sandboxes with zero infrastructure overhead.

View details
84
Repo Health
78
Technical
67
Dependency
Built with
Go82%
Python17%
Updated 3 days ago
Go
90%
Apache 2.0

CasaOS

Hosting Control Panel · File Storage

37,163

Your simple, elegant personal cloud OS for home data and apps

View details
51
Repo Health
71
Technical
65
Dependency
Built with
Go90%
Updated 1 years ago
Go
63%
Apache 2.0

Coroot

Analytics · Monitoring

7,895

eBPF-powered observability with AI root cause analysis — zero code changes required, full-stack visibility out of the box.

View details
88
Repo Health
80
Technical
65
Dependency
Built with
Go63%
Vue35%
Updated 3 days ago
Go
49%
Other

Cosmos-Server

Security · Authentication

6,134

All-in-one self-hosted home server with SmartShield anti-DDoS, Nebula mesh VPN, automatic HTTPS, and a 250-app marketplace — all secured behind a unified auth layer.

View details
86
Repo Health
59
Technical
65
Dependency
Built with
Go49%
JavaScript48%
Updated yesterday
Go
92%
AGPL 3.0

Cozy Stack

File Storage · Productivity

1,270

Self-hosted personal cloud platform that unifies your files, apps, and devices in one private space you fully control.

View details
94
Repo Health
77
Technical
67
Dependency
Built with
Go92%
Updated 2 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search