d58b61067f519e90bee843429076cfe14cf81d4fb67283e9022d5d4667264272
Log
A high-performance, buffered, rotating file logger for Go applications with built-in disk management, operational monitoring, and framework compatibility adapters.
✨ Key Features
- 🚀 Lock-free async logging with minimal application impact
- 📁 Automatic file rotation and disk space management
- 📊 Operational heartbeats for production monitoring
- 🔄 Hot reconfiguration without data loss
- 🎯 Framework adapters for gnet v2 and fasthttp
- 🛡️ Production-grade reliability with graceful shutdown
🚀 Quick Start
package main
import (
"github.com/lixenwraith/log"
)
func main() {
// Create and initialize logger
logger := log.NewLogger()
err := logger.ApplyConfigString("directory=/var/log/myapp")
if err != nil {
panic(err)
}
defer logger.Shutdown()
// Start logging
logger.Info("Application started", "version", "1.0.0")
logger.Debug("Debug information", "user_id", 12345)
logger.Warn("Warning message", "threshold", 0.95)
logger.Error("Error occurred", "code", 500)
}
📦 Installation
go get github.com/lixenwraith/log
For configuration management support:
go get github.com/lixenwraith/config
📚 Documentation
- Getting Started - Installation and basic usage
- Configuration Guide - All configuration options
- Configuration Builder - Builder pattern guide
- API Reference - Complete API documentation
- Logging Guide - Logging methods and best practices
- Disk Management - File rotation and cleanup
- Heartbeat Monitoring - Operational statistics
- Compatibility Adapters - Framework integrations
🎯 Framework Integration
The package includes adapters for some popular Go frameworks:
// gnet v2 integration
adapter := compat.NewGnetAdapter(logger)
gnet.Run(handler, "tcp://127.0.0.1:9000", gnet.WithLogger(adapter))
// fasthttp integration
adapter := compat.NewFastHTTPAdapter(logger)
server := &fasthttp.Server{Logger: adapter}
See Compatibility Adapters for detailed integration guides.
🏗️ Architecture Overview
The logger uses a lock-free, channel-based architecture for high performance:
Application → Log Methods → Buffered Channel → Background Processor → File/Console
↓ ↓
(non-blocking) (rotation, cleanup, monitoring)
🤝 Contributing
Contributions and suggestions are welcome! There is no contribution policy, but if interested, please submit pull requests to the repository. Submit suggestions or issues at issue tracker.
📄 License
BSD-3-Clause
Description
Languages
Go
100%