modify dingtalk and discord logger
This commit is contained in:
parent
3e754dab0e
commit
f3200450e4
3 changed files with 45 additions and 1 deletions
|
|
@ -10,6 +10,7 @@ import (
|
||||||
|
|
||||||
"github.com/open-dingtalk/dingtalk-stream-sdk-go/chatbot"
|
"github.com/open-dingtalk/dingtalk-stream-sdk-go/chatbot"
|
||||||
"github.com/open-dingtalk/dingtalk-stream-sdk-go/client"
|
"github.com/open-dingtalk/dingtalk-stream-sdk-go/client"
|
||||||
|
dinglog "github.com/open-dingtalk/dingtalk-stream-sdk-go/logger"
|
||||||
|
|
||||||
"github.com/sipeed/picoclaw/pkg/bus"
|
"github.com/sipeed/picoclaw/pkg/bus"
|
||||||
"github.com/sipeed/picoclaw/pkg/channels"
|
"github.com/sipeed/picoclaw/pkg/channels"
|
||||||
|
|
@ -39,6 +40,9 @@ func NewDingTalkChannel(cfg config.DingTalkConfig, messageBus *bus.MessageBus) (
|
||||||
return nil, fmt.Errorf("dingtalk client_id and client_secret are required")
|
return nil, fmt.Errorf("dingtalk client_id and client_secret are required")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set the logger for the Stream SDK
|
||||||
|
dinglog.SetLogger(logger.NewLogger("dingtalk"))
|
||||||
|
|
||||||
base := channels.NewBaseChannel("dingtalk", cfg, messageBus, cfg.AllowFrom,
|
base := channels.NewBaseChannel("dingtalk", cfg, messageBus, cfg.AllowFrom,
|
||||||
channels.WithMaxMessageLength(20000),
|
channels.WithMaxMessageLength(20000),
|
||||||
channels.WithGroupTrigger(cfg.GroupTrigger),
|
channels.WithGroupTrigger(cfg.GroupTrigger),
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,15 @@ type DiscordChannel struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewDiscordChannel(cfg config.DiscordConfig, bus *bus.MessageBus) (*DiscordChannel, error) {
|
func NewDiscordChannel(cfg config.DiscordConfig, bus *bus.MessageBus) (*DiscordChannel, error) {
|
||||||
|
|
||||||
|
discordgo.Logger = logger.NewLogger("discord").
|
||||||
|
WithLevels(map[int]logger.LogLevel{
|
||||||
|
discordgo.LogError: logger.ERROR,
|
||||||
|
discordgo.LogWarning: logger.WARN,
|
||||||
|
discordgo.LogInformational: logger.INFO,
|
||||||
|
discordgo.LogDebug: logger.DEBUG,
|
||||||
|
}).Log
|
||||||
|
|
||||||
session, err := discordgo.New("Bot " + cfg.Token)
|
session, err := discordgo.New("Bot " + cfg.Token)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to create discord session: %w", err)
|
return nil, fmt.Errorf("failed to create discord session: %w", err)
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,6 @@ func getCallerInfo() (string, int, string) {
|
||||||
|
|
||||||
funcName := fn.Name()
|
funcName := fn.Name()
|
||||||
if strings.HasPrefix(funcName, "runtime.") {
|
if strings.HasPrefix(funcName, "runtime.") {
|
||||||
fmt.Println("===", funcName)
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -296,6 +295,7 @@ func FatalCF(component string, message string, fields map[string]any) {
|
||||||
// Logger implements common Logger interface
|
// Logger implements common Logger interface
|
||||||
type Logger struct {
|
type Logger struct {
|
||||||
component string
|
component string
|
||||||
|
levels map[int]LogLevel
|
||||||
}
|
}
|
||||||
|
|
||||||
// Debug logs debug messages
|
// Debug logs debug messages
|
||||||
|
|
@ -335,17 +335,48 @@ func (b *Logger) Warnf(format string, v ...any) {
|
||||||
logMessage(WARN, b.component, fmt.Sprintf(format, v...), nil)
|
logMessage(WARN, b.component, fmt.Sprintf(format, v...), nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Warningf logs formatted warning messages
|
||||||
|
func (b *Logger) Warningf(format string, v ...any) {
|
||||||
|
logMessage(WARN, b.component, fmt.Sprintf(format, v...), nil)
|
||||||
|
}
|
||||||
|
|
||||||
// Errorf logs formatted error messages
|
// Errorf logs formatted error messages
|
||||||
func (b *Logger) Errorf(format string, v ...any) {
|
func (b *Logger) Errorf(format string, v ...any) {
|
||||||
//debugCallerInfo()
|
//debugCallerInfo()
|
||||||
logMessage(ERROR, b.component, fmt.Sprintf(format, v...), nil)
|
logMessage(ERROR, b.component, fmt.Sprintf(format, v...), nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Fatalf logs formatted fatal messages and exits
|
||||||
|
func (b *Logger) Fatalf(format string, v ...any) {
|
||||||
|
logMessage(FATAL, b.component, fmt.Sprintf(format, v...), nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Log logs a message at a given level with caller information
|
||||||
|
// msgL: message level (DEBUG, INFO, WARN, ERROR, FATAL)
|
||||||
|
// caller: unused parameter reserved for compatibility
|
||||||
|
// format: format string
|
||||||
|
// a: format arguments
|
||||||
|
func (b *Logger) Log(msgL, caller int, format string, a ...interface{}) {
|
||||||
|
level := LogLevel(msgL)
|
||||||
|
if b.levels != nil {
|
||||||
|
if lvl, ok := b.levels[msgL]; ok {
|
||||||
|
level = lvl
|
||||||
|
}
|
||||||
|
}
|
||||||
|
logMessage(level, b.component, fmt.Sprintf(format, a...), nil)
|
||||||
|
}
|
||||||
|
|
||||||
// Sync flushes log buffer (no-op for this implementation)
|
// Sync flushes log buffer (no-op for this implementation)
|
||||||
func (b *Logger) Sync() error {
|
func (b *Logger) Sync() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WithLevels sets log levels mapping for this logger
|
||||||
|
func (b *Logger) WithLevels(levels map[int]LogLevel) *Logger {
|
||||||
|
b.levels = levels
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
|
||||||
// NewLogger creates a new logger instance with optional component name
|
// NewLogger creates a new logger instance with optional component name
|
||||||
func NewLogger(component string) *Logger {
|
func NewLogger(component string) *Logger {
|
||||||
return &Logger{component: component}
|
return &Logger{component: component}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue