diff --git a/json_handler.go b/json_handler.go index 3751d09..aefc37b 100644 --- a/json_handler.go +++ b/json_handler.go @@ -11,9 +11,20 @@ func NewJSONHandler() *JSONHandler { return &JSONHandler{} } -func (j *JSONHandler) Log(level slog.Level, message string, data ...slog.Field) error { - event := simplelog.NewEvent(level.String(), message, data) - jsonData, _ := json.Marshal(event) +func (j *JSONHandler) Handle(ctx context.Context, record slog.Record) error { + jsonData, _ := json.Marshal(record) log.Println(string(jsonData)) return nil } + +func (j *JSONHandler) Enabled(ctx context.Context, level slog.Level) bool { + return true +} + +func (j *JSONHandler) WithAttrs(attrs []slog.Attr) slog.Handler { + return j +} + +func (j *JSONHandler) WithGroup(name string) slog.Handler { + return j +} diff --git a/simplelog.go b/simplelog.go index 2855eb0..edc564c 100644 --- a/simplelog.go +++ b/simplelog.go @@ -14,18 +14,43 @@ var ( ) type CustomHandler struct { - handlers []Handler + handlers []slog.Handler } -func (cl *CustomHandler) Log(level slog.Level, message string, data ...slog.Field) error { +func (cl *CustomHandler) Handle(ctx context.Context, record slog.Record) error { for _, handler := range cl.handlers { - if err := handler.Log(level, message, data...); err != nil { + if err := handler.Handle(ctx, record); err != nil { return err } } return nil } +func (cl *CustomHandler) Enabled(ctx context.Context, level slog.Level) bool { + for _, handler := range cl.handlers { + if handler.Enabled(ctx, level) { + return true + } + } + return false +} + +func (cl *CustomHandler) WithAttrs(attrs []slog.Attr) slog.Handler { + newHandlers := make([]slog.Handler, len(cl.handlers)) + for i, handler := range cl.handlers { + newHandlers[i] = handler.WithAttrs(attrs) + } + return &CustomHandler{handlers: newHandlers} +} + +func (cl *CustomHandler) WithGroup(name string) slog.Handler { + newHandlers := make([]slog.Handler, len(cl.handlers)) + for i, handler := range cl.handlers { + newHandlers[i] = handler.WithGroup(name) + } + return &CustomHandler{handlers: newHandlers} +} + var ourCustomLogger *slog.Logger func init() { diff --git a/webhook_handler.go b/webhook_handler.go index 048f5f7..2788004 100644 --- a/webhook_handler.go +++ b/webhook_handler.go @@ -19,9 +19,8 @@ func NewWebhookHandler(webhookURL string) (*WebhookHandler, error) { return &WebhookHandler{webhookURL: webhookURL}, nil } -func (w *WebhookHandler) Log(level slog.Level, message string, data ...slog.Field) error { - event := simplelog.NewEvent(level.String(), message, data) - jsonData, err := json.Marshal(event) +func (w *WebhookHandler) Handle(ctx context.Context, record slog.Record) error { + jsonData, err := json.Marshal(record) if err != nil { return fmt.Errorf("error marshaling event: %v", err) }