54 lines
1.4 KiB
Go
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)
|
|
}
|