e1.4.4 Fix module path and dependency issues, compatibility package added.
This commit is contained in:
79
compat/gnet.go
Normal file
79
compat/gnet.go
Normal file
@ -0,0 +1,79 @@
|
||||
// FILE: compat/gnet.go
|
||||
package compat
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/lixenwraith/log"
|
||||
)
|
||||
|
||||
// GnetAdapter wraps lixenwraith/log.Logger to implement gnet's logging.Logger interface
|
||||
type GnetAdapter struct {
|
||||
logger *log.Logger
|
||||
fatalHandler func(msg string) // Customizable fatal behavior
|
||||
}
|
||||
|
||||
// NewGnetAdapter creates a new gnet-compatible logger adapter
|
||||
func NewGnetAdapter(logger *log.Logger, opts ...GnetOption) *GnetAdapter {
|
||||
adapter := &GnetAdapter{
|
||||
logger: logger,
|
||||
fatalHandler: func(msg string) {
|
||||
os.Exit(1) // Default behavior matches gnet expectations
|
||||
},
|
||||
}
|
||||
|
||||
for _, opt := range opts {
|
||||
opt(adapter)
|
||||
}
|
||||
|
||||
return adapter
|
||||
}
|
||||
|
||||
// GnetOption allows customizing adapter behavior
|
||||
type GnetOption func(*GnetAdapter)
|
||||
|
||||
// WithFatalHandler sets a custom fatal handler
|
||||
func WithFatalHandler(handler func(string)) GnetOption {
|
||||
return func(a *GnetAdapter) {
|
||||
a.fatalHandler = handler
|
||||
}
|
||||
}
|
||||
|
||||
// Debugf logs at debug level with printf-style formatting
|
||||
func (a *GnetAdapter) Debugf(format string, args ...interface{}) {
|
||||
msg := fmt.Sprintf(format, args...)
|
||||
a.logger.Debug("msg", msg, "source", "gnet")
|
||||
}
|
||||
|
||||
// Infof logs at info level with printf-style formatting
|
||||
func (a *GnetAdapter) Infof(format string, args ...interface{}) {
|
||||
msg := fmt.Sprintf(format, args...)
|
||||
a.logger.Info("msg", msg, "source", "gnet")
|
||||
}
|
||||
|
||||
// Warnf logs at warn level with printf-style formatting
|
||||
func (a *GnetAdapter) Warnf(format string, args ...interface{}) {
|
||||
msg := fmt.Sprintf(format, args...)
|
||||
a.logger.Warn("msg", msg, "source", "gnet")
|
||||
}
|
||||
|
||||
// Errorf logs at error level with printf-style formatting
|
||||
func (a *GnetAdapter) Errorf(format string, args ...interface{}) {
|
||||
msg := fmt.Sprintf(format, args...)
|
||||
a.logger.Error("msg", msg, "source", "gnet")
|
||||
}
|
||||
|
||||
// Fatalf logs at error level and triggers fatal handler
|
||||
func (a *GnetAdapter) Fatalf(format string, args ...interface{}) {
|
||||
msg := fmt.Sprintf(format, args...)
|
||||
a.logger.Error("msg", msg, "source", "gnet", "fatal", true)
|
||||
|
||||
// Ensure log is flushed before exit
|
||||
_ = a.logger.Flush(100 * time.Millisecond)
|
||||
|
||||
if a.fatalHandler != nil {
|
||||
a.fatalHandler(msg)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user