Files
log/README.md

3.2 KiB

Log

Go License Documentation

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.ApplyOverride("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

🎯 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