106 lines
2.7 KiB
Go
106 lines
2.7 KiB
Go
// --- File: interface.go ---
|
|
package log
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// Log level constants
|
|
const (
|
|
LevelDebug int64 = -4
|
|
LevelInfo int64 = 0
|
|
LevelWarn int64 = 4
|
|
LevelError int64 = 8
|
|
)
|
|
|
|
// Heartbeat log levels
|
|
const (
|
|
LevelProc int64 = 12 // Process/Logger Stats
|
|
LevelDisk int64 = 16 // Disk/File Stats
|
|
LevelSys int64 = 20 // System/Runtime Stats
|
|
)
|
|
|
|
// Record flags for controlling output structure
|
|
const (
|
|
FlagShowTimestamp int64 = 0b01
|
|
FlagShowLevel int64 = 0b10
|
|
FlagDefault = FlagShowTimestamp | FlagShowLevel
|
|
)
|
|
|
|
// logRecord represents a single log entry.
|
|
type logRecord struct {
|
|
Flags int64
|
|
TimeStamp time.Time
|
|
Level int64
|
|
Trace string
|
|
Args []any
|
|
}
|
|
|
|
// Logger instance methods for logging at different levels
|
|
|
|
// Debug logs a message at debug level.
|
|
func (l *Logger) Debug(args ...any) {
|
|
flags := l.getFlags()
|
|
traceDepth, _ := l.config.Int64("log.trace_depth")
|
|
l.log(flags, LevelDebug, traceDepth, args...)
|
|
}
|
|
|
|
// Info logs a message at info level.
|
|
func (l *Logger) Info(args ...any) {
|
|
flags := l.getFlags()
|
|
traceDepth, _ := l.config.Int64("log.trace_depth")
|
|
l.log(flags, LevelInfo, traceDepth, args...)
|
|
}
|
|
|
|
// Warn logs a message at warning level.
|
|
func (l *Logger) Warn(args ...any) {
|
|
flags := l.getFlags()
|
|
traceDepth, _ := l.config.Int64("log.trace_depth")
|
|
l.log(flags, LevelWarn, traceDepth, args...)
|
|
}
|
|
|
|
// Error logs a message at error level.
|
|
func (l *Logger) Error(args ...any) {
|
|
flags := l.getFlags()
|
|
traceDepth, _ := l.config.Int64("log.trace_depth")
|
|
l.log(flags, LevelError, traceDepth, args...)
|
|
}
|
|
|
|
// DebugTrace logs a debug message with function call trace.
|
|
func (l *Logger) DebugTrace(depth int, args ...any) {
|
|
flags := l.getFlags()
|
|
l.log(flags, LevelDebug, int64(depth), args...)
|
|
}
|
|
|
|
// InfoTrace logs an info message with function call trace.
|
|
func (l *Logger) InfoTrace(depth int, args ...any) {
|
|
flags := l.getFlags()
|
|
l.log(flags, LevelInfo, int64(depth), args...)
|
|
}
|
|
|
|
// WarnTrace logs a warning message with function call trace.
|
|
func (l *Logger) WarnTrace(depth int, args ...any) {
|
|
flags := l.getFlags()
|
|
l.log(flags, LevelWarn, int64(depth), args...)
|
|
}
|
|
|
|
// ErrorTrace logs an error message with function call trace.
|
|
func (l *Logger) ErrorTrace(depth int, args ...any) {
|
|
flags := l.getFlags()
|
|
l.log(flags, LevelError, int64(depth), args...)
|
|
}
|
|
|
|
// Log writes a timestamp-only record without level information.
|
|
func (l *Logger) Log(args ...any) {
|
|
l.log(FlagShowTimestamp, LevelInfo, 0, args...)
|
|
}
|
|
|
|
// Message writes a plain record without timestamp or level info.
|
|
func (l *Logger) Message(args ...any) {
|
|
l.log(0, LevelInfo, 0, args...)
|
|
}
|
|
|
|
// LogTrace writes a timestamp record with call trace but no level info.
|
|
func (l *Logger) LogTrace(depth int, args ...any) {
|
|
l.log(FlagShowTimestamp, LevelInfo, int64(depth), args...)
|
|
} |