mirror of
https://github.com/laoxong/nofx.git
synced 2026-06-04 09:58:22 +08:00
168 lines
3.7 KiB
Go
168 lines
3.7 KiB
Go
package logger
|
|
|
|
import (
|
|
"os"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
var (
|
|
// Log is the global logger instance
|
|
Log *logrus.Logger
|
|
)
|
|
|
|
func init() {
|
|
// Auto-initialize default logger to ensure it works before Init is called
|
|
Log = logrus.New()
|
|
Log.SetLevel(logrus.InfoLevel)
|
|
Log.SetFormatter(&logrus.TextFormatter{
|
|
FullTimestamp: true,
|
|
TimestampFormat: "2006-01-02 15:04:05",
|
|
ForceColors: true,
|
|
})
|
|
Log.SetOutput(os.Stdout)
|
|
}
|
|
|
|
// ============================================================================
|
|
// Initialization functions
|
|
// ============================================================================
|
|
|
|
// Init initializes the global logger
|
|
// If config is nil, uses default configuration (console output, info level)
|
|
func Init(cfg *Config) error {
|
|
Log = logrus.New()
|
|
|
|
// Use default values if no config provided
|
|
if cfg == nil {
|
|
cfg = &Config{Level: "info"}
|
|
}
|
|
|
|
// Set default values
|
|
cfg.SetDefaults()
|
|
|
|
// Set log level
|
|
level, err := logrus.ParseLevel(cfg.Level)
|
|
if err != nil {
|
|
level = logrus.InfoLevel
|
|
}
|
|
Log.SetLevel(level)
|
|
|
|
// Set formatter (always use colored text format)
|
|
Log.SetFormatter(&logrus.TextFormatter{
|
|
FullTimestamp: true,
|
|
TimestampFormat: "2006-01-02 15:04:05",
|
|
ForceColors: true,
|
|
})
|
|
|
|
// Set output target (default stdout)
|
|
Log.SetOutput(os.Stdout)
|
|
|
|
// Enable caller location info
|
|
Log.SetReportCaller(true)
|
|
|
|
return nil
|
|
}
|
|
|
|
// InitWithSimpleConfig initializes logger with simplified config
|
|
// Suitable for scenarios that only need basic functionality
|
|
func InitWithSimpleConfig(level string) error {
|
|
return Init(&Config{Level: level})
|
|
}
|
|
|
|
// Shutdown gracefully shuts down the logger
|
|
func Shutdown() {
|
|
// Reserved for future extensions
|
|
}
|
|
|
|
// ============================================================================
|
|
// Logging functions
|
|
// ============================================================================
|
|
|
|
// WithFields creates logger entry with fields
|
|
func WithFields(fields logrus.Fields) *logrus.Entry {
|
|
return Log.WithFields(fields)
|
|
}
|
|
|
|
// WithField creates logger entry with a single field
|
|
func WithField(key string, value interface{}) *logrus.Entry {
|
|
return Log.WithField(key, value)
|
|
}
|
|
|
|
// add debug, info, warn
|
|
func Debug(args ...interface{}) {
|
|
Log.Debug(args...)
|
|
}
|
|
|
|
func Info(args ...interface{}) {
|
|
Log.Info(args...)
|
|
}
|
|
|
|
func Warn(args ...interface{}) {
|
|
Log.Warn(args...)
|
|
}
|
|
|
|
func Debugf(format string, args ...interface{}) {
|
|
Log.Debugf(format, args...)
|
|
}
|
|
|
|
func Infof(format string, args ...interface{}) {
|
|
Log.Infof(format, args...)
|
|
}
|
|
|
|
func Warnf(format string, args ...interface{}) {
|
|
Log.Warnf(format, args...)
|
|
}
|
|
|
|
func Error(args ...interface{}) {
|
|
Log.Error(args...)
|
|
}
|
|
|
|
func Errorf(format string, args ...interface{}) {
|
|
Log.Errorf(format, args...)
|
|
}
|
|
|
|
func Fatal(args ...interface{}) {
|
|
Log.Fatal(args...)
|
|
}
|
|
|
|
func Fatalf(format string, args ...interface{}) {
|
|
Log.Fatalf(format, args...)
|
|
}
|
|
|
|
func Panic(args ...interface{}) {
|
|
Log.Panic(args...)
|
|
}
|
|
|
|
func Panicf(format string, args ...interface{}) {
|
|
Log.Panicf(format, args...)
|
|
}
|
|
|
|
// ============================================================================
|
|
// MCP Logger adapter
|
|
// ============================================================================
|
|
|
|
// MCPLogger adapter that allows MCP package to use the global logger
|
|
// Implements mcp.Logger interface
|
|
type MCPLogger struct{}
|
|
|
|
// NewMCPLogger creates MCP log adapter
|
|
func NewMCPLogger() *MCPLogger {
|
|
return &MCPLogger{}
|
|
}
|
|
|
|
func (l *MCPLogger) Debugf(format string, args ...any) {
|
|
Log.Debugf(format, args...)
|
|
}
|
|
|
|
func (l *MCPLogger) Infof(format string, args ...any) {
|
|
Log.Infof(format, args...)
|
|
}
|
|
|
|
func (l *MCPLogger) Warnf(format string, args ...any) {
|
|
Log.Warnf(format, args...)
|
|
}
|
|
|
|
func (l *MCPLogger) Errorf(format string, args ...any) {
|
|
Log.Errorf(format, args...)
|
|
}
|