...
This commit is contained in:
69
pkg/logger/README.md
Normal file
69
pkg/logger/README.md
Normal file
@@ -0,0 +1,69 @@
|
||||
# Logger Module (Go)
|
||||
|
||||
A simple logging system that provides structured logging with search capabilities, ported from V to Go.
|
||||
|
||||
Logs are stored in hourly files with a consistent format that makes them both human-readable and machine-parseable.
|
||||
|
||||
## Features
|
||||
|
||||
- Structured logging with categories and error types
|
||||
- Automatic timestamp management
|
||||
- Multi-line message support
|
||||
- Search functionality with filtering options
|
||||
- Human-readable log format
|
||||
|
||||
## Usage
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
"logger"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Create a new logger
|
||||
l, err := logger.New("/var/logs")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// Log a message
|
||||
err = l.Log(logger.LogItemArgs{
|
||||
Category: "system",
|
||||
Message: "System started successfully",
|
||||
LogType: logger.LogTypeStdout,
|
||||
})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// Log an error
|
||||
err = l.Log(logger.LogItemArgs{
|
||||
Category: "system",
|
||||
Message: "Failed to connect\nRetrying in 5 seconds...",
|
||||
LogType: logger.LogTypeError,
|
||||
})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// Search logs
|
||||
fromTime := time.Now().Add(-24 * time.Hour) // Last 24 hours
|
||||
results, err := l.Search(logger.SearchArgs{
|
||||
TimestampFrom: &fromTime,
|
||||
Category: "system", // Filter by category
|
||||
Message: "failed", // Search in message content
|
||||
LogType: logger.LogTypeError, // Only error messages
|
||||
MaxItems: 100, // Limit results
|
||||
})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
for _, item := range results {
|
||||
fmt.Printf("[%s] %s: %s\n", item.Timestamp.Format(time.RFC3339), item.Category, item.Message)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user