https://github.com/structx/tea
golang logger 🫖
https://github.com/structx/tea
golang logging
Last synced: 3 months ago
JSON representation
golang logger 🫖
- Host: GitHub
- URL: https://github.com/structx/tea
- Owner: structx
- License: mit
- Created: 2026-01-01T22:10:42.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2026-02-15T07:00:05.000Z (5 months ago)
- Last Synced: 2026-02-15T13:15:58.713Z (5 months ago)
- Topics: golang, logging
- Language: Go
- Homepage:
- Size: 9.77 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 🍵 Teapot
Teapot is a high-performance, zero-allocation structured logging library for Go. Built with zero external dependencies, it utilizes an optimized sync.Pool and an explicit attribute system to provide a high-speed logging experience without the overhead of reflection or interface boxing.
## 📦 Installation
```bash
go get github.com/structx/teapot
```
## 🚀 Key Features
Zero Allocations: Optimized to hit 0 B/op and 0 allocs/op in standard hot paths.\
Explicit Type System: Uses a "Fat Attr" struct to avoid reflection and unnecessary heap escapes.\
Native JSON Support: High-speed JSON output designed for production log aggregators.\
Built-in Stack Traces: Automatic capture of runtime.Stack for ERROR and FATAL levels.
## ⚡ Performance
```bash
goos: linux
goarch: amd64
pkg: github.com/structx/teapot
cpu: Intel(R) Core(TM) i7-10850H CPU @ 2.70GHz
BenchmarkLogger_JSON-12 70972780 171.4 ns/op 0 B/op 0 allocs/op
PASS
ok github.com/structx/teapot 12.340s
```
## 🛠 Usage
Strongly Typed Attributes
Teapot avoids the overhead of interface{} by providing explicit attribute constructors. This ensures your logs are fast and type-safe.
```go
package main
import (
"github.com/structx/teapot"
)
func main() {
log := teapot.New(
teapot.WithLevel(teapot.INFO),
)
log.Infof("user login attempt",
teapot.String("user", "alice"),
teapot.Int("attempts", 1),
teapot.Bool("success", true),
)
}
```
## Error Handling & Stack Traces
Teapot automatically captures a full stack trace when logging at the ERROR or FATAL level. Use the Err helper for consistent naming:
```go
if err := db.Connect(); err != nil {
// This will include a "stacktrace" field in the JSON output automatically
log.Error("database failure", teapot.Err(err))
}
```
## ⚙️ Configuration
Option Description Default\
WithLevel(lvl) Sets minimum logging threshold `DEBUG`\
WithWriter(w) Destination (file, stdout, etc) os.Stdout
## ⚖️ License
MIT License. See [License](LICENSE) for details.