Files
masterlog/types.go
2025-11-10 05:20:25 +01:00

54 lines
1.4 KiB
Go

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)
}