feat(log): Formatted console logging with file output

This commit is contained in:
Björn Benouarets
2025-11-10 05:20:25 +01:00
parent 3e78775b0f
commit 7b3c176d20
12 changed files with 1344 additions and 0 deletions

53
types.go Normal file
View File

@@ -0,0 +1,53 @@
package masterlog
import "time"
// Level represents the log level
type Level int
const (
LevelTrace Level = iota
LevelDebug
LevelInfo
LevelWarn
LevelError
)
// Entry represents a log entry
type Entry struct {
Timestamp time.Time
Level Level
File string
Line int
Message string
Fields map[string]interface{} // All fields
CustomFields map[string]interface{} // User-provided fields (to be shown first)
DefaultFields map[string]interface{} // Default fields (go_version, pid)
}
// Encoder encodes log entries to a specific format
type Encoder interface {
Encode(entry Entry) ([]byte, error)
}
// Writer writes encoded log entries
type Writer interface {
Write(data []byte) error
Close() error
SupportsColors() bool // Returns true if the writer supports ANSI color codes
}
// Logger is the main logger interface
type Logger interface {
Trace(message string, fields ...map[string]interface{})
Debug(message string, fields ...map[string]interface{})
Info(message string, fields ...map[string]interface{})
Warn(message string, fields ...map[string]interface{})
Error(message string, fields ...map[string]interface{})
SetLevel(level Level)
AddWriter(writer Writer)
AddEncoder(encoder Encoder)
SetPseudonymizer(pseudonymizer *Pseudonymizer)
AddSensitiveField(fieldName string)
AddSensitiveFields(fieldNames ...string)
}