https://github.com/amarsinghrathour/fastlog
fastlog is a high-performance, lightweight logging package for Go. It offers a simple API, flexible configuration, and thread-safe operations, making it ideal for both small scripts and large-scale systems.
https://github.com/amarsinghrathour/fastlog
concurrent fastlog go golang high-performance lightweight log logger logging thread-safe
Last synced: 11 months ago
JSON representation
fastlog is a high-performance, lightweight logging package for Go. It offers a simple API, flexible configuration, and thread-safe operations, making it ideal for both small scripts and large-scale systems.
- Host: GitHub
- URL: https://github.com/amarsinghrathour/fastlog
- Owner: amarsinghrathour
- License: mit
- Created: 2024-06-28T08:04:23.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-07-16T18:42:56.000Z (almost 2 years ago)
- Last Synced: 2025-06-22T04:39:50.281Z (about 1 year ago)
- Topics: concurrent, fastlog, go, golang, high-performance, lightweight, log, logger, logging, thread-safe
- Language: Go
- Homepage:
- Size: 15.6 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# fastlog
`fastlog` is a high-performance logging package for Go, designed to be extremely fast, efficient, and suitable for high-performance applications. It supports logging to both files and standard output, with features such as buffering, non-blocking I/O, periodic flushing, log rotation, and configurable log levels.
## Features
- **Log Levels**: Supports DEBUG, INFO, WARN, ERROR, and FATAL levels.
- **Buffering**: Uses a buffer to minimize I/O operations.
- **Non-blocking I/O**: Log messages are sent to a channel and processed by a separate goroutine.
- **Periodic Flushing**: Flushes logs every 5 seconds.
- **Log Rotation**: Automatically rotates log files when they exceed a predefined size.
- **Configurable Output**: Logs can be written to a file or standard output based on configuration.
- **Structured Logging**: Supports structured logging and JSON formatted logs.
## Installation
To install `fastlog`, run:
```sh
go get github.com/amarsinghrathour/fastlog
```
## Usage
Here's an example of how to use fastlog:
```
package main
import (
"log"
"os"
"path/filepath"
"time"
"github.com/yourusername/fastlog"
)
func main() {
logDir := "logs"
baseLogFileName := filepath.Join(logDir, "app.log")
err := os.MkdirAll(logDir, 0755)
if err != nil {
log.Fatalf("Failed to create log directory: %v", err)
}
// Configure to log to a file
loggerConfig := fastlog.LoggerConfig{
Level: fastlog.DEBUG,
FilePath: baseLogFileName,
RotationDir: logDir,
Stdout: false, // Set to true to log to stdout instead of a file
JSONFormat: true, // Set to true to enable JSON formatted logs
}
logger, err := fastlog.NewLogger(loggerConfig)
if err != nil {
log.Fatalf("Failed to create logger: %v", err)
}
defer logger.Close()
// Log various messages
logger.Debug("This is a debug message", "key1", "value1")
logger.Info("This is an info message", "key2", "value2")
logger.Warn("This is a warning message", "key3", "value3")
logger.Error("This is an error message", "key4", "value4")
// Simulate some work to generate logs over time
for i := 0; i < 10; i++ {
logger.Info("Working on task", "iteration", i)
time.Sleep(1 * time.Second)
}
// Log a fatal message (this will terminate the program)
logger.Fatal("This is a fatal message", "key5", "value5")
}
```
[](https://choosealicense.com/licenses/mit/)
[](https://pkg.go.dev/github.com/amarsinghrathour/fastlog)