heroagent/pkg/logger/cmd/demo/main.go
2025-04-23 04:18:28 +02:00

115 lines
2.5 KiB
Go

package main
import (
"fmt"
"os"
"path/filepath"
"time"
"github.com/freeflowuniverse/heroagent/pkg/logger"
)
func main() {
// Create logs directory in user's home directory
homeDir, err := os.UserHomeDir()
if err != nil {
fmt.Printf("Error getting home directory: %v\n", err)
return
}
logDir := filepath.Join(homeDir, "heroagent_logs")
fmt.Printf("Logs will be stored in: %s\n", logDir)
// Create a new logger
log, err := logger.New(logDir)
if err != nil {
fmt.Printf("Error creating logger: %v\n", err)
return
}
// Log regular messages
fmt.Println("Logging standard messages...")
log.Log(logger.LogItemArgs{
Category: "system",
Message: "Application started",
LogType: logger.LogTypeStdout,
})
log.Log(logger.LogItemArgs{
Category: "config",
Message: "Configuration loaded successfully",
LogType: logger.LogTypeStdout,
})
// Log error messages
fmt.Println("Logging error messages...")
log.Log(logger.LogItemArgs{
Category: "network",
Message: "Connection failed\nRetrying in 5 seconds...",
LogType: logger.LogTypeError,
})
log.Log(logger.LogItemArgs{
Category: "database",
Message: "Query timeout\nTrying fallback connection",
LogType: logger.LogTypeError,
})
// Wait a moment to ensure logs are written
time.Sleep(500 * time.Millisecond)
// Now search for logs
fmt.Println("\nSearching for all logs:")
results, err := log.Search(logger.SearchArgs{
MaxItems: 100,
})
if err != nil {
fmt.Printf("Error searching logs: %v\n", err)
return
}
printSearchResults(results)
// Search for error logs only
fmt.Println("\nSearching for error logs only:")
errorResults, err := log.Search(logger.SearchArgs{
LogType: logger.LogTypeError,
MaxItems: 100,
})
if err != nil {
fmt.Printf("Error searching for error logs: %v\n", err)
return
}
printSearchResults(errorResults)
// Search by category
fmt.Println("\nSearching for 'network' category logs:")
networkResults, err := log.Search(logger.SearchArgs{
Category: "network",
MaxItems: 100,
})
if err != nil {
fmt.Printf("Error searching for network logs: %v\n", err)
return
}
printSearchResults(networkResults)
fmt.Println("\nLog file can be found at:", logDir)
}
func printSearchResults(results []logger.LogItem) {
fmt.Printf("Found %d log items:\n", len(results))
for i, item := range results {
logType := "STDOUT"
if item.LogType == logger.LogTypeError {
logType = "ERROR"
}
fmt.Printf("%d. [%s] [%s] %s: %s\n",
i+1,
item.Timestamp.Format("15:04:05"),
logType,
item.Category,
item.Message)
}
}