33 lines
810 B
Go
33 lines
810 B
Go
package system
|
|
|
|
import (
|
|
"context"
|
|
"log/slog"
|
|
)
|
|
|
|
// PaymentLogger isolates payment audit logging from the payment workflow and
|
|
// lets an application replace slog with its own structured logger.
|
|
type PaymentLogger interface {
|
|
Info(context.Context, string, ...any)
|
|
Error(context.Context, string, ...any)
|
|
}
|
|
|
|
type slogPaymentLogger struct {
|
|
logger *slog.Logger
|
|
}
|
|
|
|
func NewPaymentLogger(logger *slog.Logger) PaymentLogger {
|
|
if logger == nil {
|
|
logger = slog.Default()
|
|
}
|
|
return &slogPaymentLogger{logger: logger.With("mod", "payment")}
|
|
}
|
|
|
|
func (l *slogPaymentLogger) Info(ctx context.Context, message string, args ...any) {
|
|
l.logger.InfoContext(ctx, message, args...)
|
|
}
|
|
|
|
func (l *slogPaymentLogger) Error(ctx context.Context, message string, args ...any) {
|
|
l.logger.ErrorContext(ctx, message, args...)
|
|
}
|