Skip to content
Snippets Groups Projects
Commit a55e36b6 authored by Pavel Antonov's avatar Pavel Antonov :asterisk:
Browse files

Merge branch 'feature/PRXS-2033-2232-LoggingInvitations' into 'feature/PRXS-2033-LoggingToServices'

Добавлено логирование событий сервиса Invitations

See merge request perxis/perxis-go!197
parents ffdb782b 3721f3b4
No related branches found
No related tags found
No related merge requests found
package invitations
const (
EventCreate = "invitations.create"
EventDelete = "invitations.delete"
EventAccept = "invitations.accept"
)
package middleware
import (
"context"
"fmt"
"git.perx.ru/perxis/perxis-go/id"
"git.perx.ru/perxis/perxis-go/pkg/errors"
"git.perx.ru/perxis/perxis-go/pkg/invitations"
"git.perx.ru/perxis/perxis-go/pkg/options"
logzap "git.perx.ru/perxis/perxis-go/zap"
"go.uber.org/zap"
)
type loggingMiddleware struct {
logger *zap.Logger
next invitations.Invitations
}
func LoggingMiddleware(logger *zap.Logger) Middleware {
return func(next invitations.Invitations) invitations.Invitations {
return &loggingMiddleware{
next: next,
logger: logger.With(logzap.Component("Invitations")),
}
}
}
func (m *loggingMiddleware) Create(ctx context.Context, invitation *invitations.Invitation) (created *invitations.Invitation, err error) {
logger := m.logger.With(
logzap.Caller(ctx),
logzap.Event(invitations.EventCreate),
logzap.Object(id.NewSpaceId(invitation.SpaceID)),
)
created, err = m.next.Create(ctx, invitation)
if err != nil {
logger.Error(fmt.Sprintf("Failed to create invitation '%s'", invitation.ID), zap.Error(err), logzap.Channels(logzap.Userlog, logzap.Syslog))
return
}
logger.Info(fmt.Sprintf("User create invitation '%s'", created.ID), logzap.Channels(logzap.Userlog))
return created, err
}
func (m *loggingMiddleware) Get(ctx context.Context, invitationId string) (invitation *invitations.Invitation, err error) {
logger := m.logger.With(
logzap.Caller(ctx),
)
invitation, err = m.next.Get(ctx, invitationId)
if err != nil {
logger.Error("Failed to get", zap.Error(err))
return
}
return invitation, err
}
func (m *loggingMiddleware) Accept(ctx context.Context, invitationId, userId string) (err error) {
invitation, err := m.next.Get(ctx, invitationId)
if err != nil {
return errors.Wrap(err, "failed to get invitation")
}
logger := m.logger.With(
logzap.Caller(ctx),
logzap.Event(invitations.EventAccept),
logzap.Object(id.NewSpaceId(invitation.SpaceID)),
)
err = m.next.Accept(ctx, invitationId, userId)
if err != nil {
logger.Error(fmt.Sprintf("Failed to accept invitation '%s'", invitationId), zap.Error(err), logzap.Channels(logzap.Userlog, logzap.Syslog))
return
}
logger.Info(fmt.Sprintf("Invitation '%s' accepted by user '%s'", invitationId, userId), logzap.Channels(logzap.Userlog))
return err
}
func (m *loggingMiddleware) Find(ctx context.Context, filter *invitations.Filter, opts *options.FindOptions) (invitations []*invitations.Invitation, total int, err error) {
logger := m.logger.With(
logzap.Caller(ctx),
)
invitations, total, err = m.next.Find(ctx, filter, opts)
if err != nil {
logger.Error("Failed to find", zap.Error(err))
return
}
return invitations, total, err
}
func (m *loggingMiddleware) Delete(ctx context.Context, invitationId string) (err error) {
invitation, err := m.next.Get(ctx, invitationId)
if err != nil {
return errors.Wrap(err, "failed to get invitation")
}
logger := m.logger.With(
logzap.Caller(ctx),
logzap.Event(invitations.EventDelete),
logzap.Object(id.NewSpaceId(invitation.SpaceID)),
)
err = m.next.Delete(ctx, invitationId)
if err != nil {
logger.Error(fmt.Sprintf("Failed to delete invitation '%s' ", invitationId), zap.Error(err), logzap.Channels(logzap.Userlog, logzap.Syslog))
return
}
logger.Info(fmt.Sprintf("Invitation '%s' deleted", invitationId), logzap.Channels(logzap.Userlog))
return err
}
......@@ -21,7 +21,7 @@ func WithLog(s invitations.Invitations, logger *zap.Logger, log_access bool) inv
if log_access {
s = AccessLoggingMiddleware(logger)(s)
}
s = ErrorLoggingMiddleware(logger)(s)
s = LoggingMiddleware(logger)(s)
s = RecoveringMiddleware(logger)(s)
return s
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment