25 lines
644 B
Go
25 lines
644 B
Go
package auditsink
|
|
|
|
import (
|
|
"context"
|
|
"log/slog"
|
|
|
|
"github.com/klarkxy/nekonest/relaycore"
|
|
)
|
|
|
|
// Sink deliberately logs only event classification and error state. It never
|
|
// serializes prompt, transcript, path, attachment, or approval payloads.
|
|
type Sink struct{ Logger *slog.Logger }
|
|
|
|
func (sink Sink) Emit(_ context.Context, event relaycore.AuditEvent) {
|
|
logger := sink.Logger
|
|
if logger == nil {
|
|
logger = slog.Default()
|
|
}
|
|
arguments := []any{"component", event.Component, "event", event.Name}
|
|
if event.Err != nil {
|
|
arguments = append(arguments, "error", event.Err.Error())
|
|
}
|
|
logger.Info("relay data-plane event", arguments...)
|
|
}
|