feat(log): Formatted console logging with file output
This commit is contained in:
53
types.go
Normal file
53
types.go
Normal 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)
|
||||
}
|
||||
Reference in New Issue
Block a user