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