diff --git a/assets/templates/middleware/middleware.tmpl b/assets/templates/middleware/middleware.tmpl index c717d577e89331ed386cf21a1b8ba5486cd54714..7a34d393cbe71648913dd708d49118da36da1105 100755 --- a/assets/templates/middleware/middleware.tmpl +++ b/assets/templates/middleware/middleware.tmpl @@ -11,17 +11,14 @@ func WithLog(s {{.Interface.Type}}, logger *zap.Logger, log_access bool) {{.Inte logger = zap.NewNop() } logger = logger.Named("{{ .Interface.Name }}") - {{- if (has $serviceName (list "Items" "Collections") ) }} if log_access { s = AccessLoggingMiddleware(logger)(s) } - s = LoggingMiddleware(logger)(s) - {{ else }} - s = ErrorLoggingMiddleware(logger)(s) - if log_access { + {{- if (has $serviceName (list "Items" "Collections") ) }} s = LoggingMiddleware(logger)(s) - } - {{ end -}} + {{ else }} + s = ErrorLoggingMiddleware(logger)(s) + {{ end }} s = RecoveringMiddleware(logger)(s) return s } diff --git a/id/object_id_test.go b/id/object_id_test.go index 572f0da96c190a2138875c6b7dcb24c237fbe6fa..4f8d018139ce0b125e09124e5113e94c8031f5b3 100644 --- a/id/object_id_test.go +++ b/id/object_id_test.go @@ -3,6 +3,7 @@ package id import ( "testing" + "git.perx.ru/perxis/perxis-go/pkg/items" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -10,7 +11,7 @@ import ( func Test_ParseID(t *testing.T) { tests := []struct { name string - id string + id any result *ObjectId wantError bool }{ @@ -104,6 +105,16 @@ func Test_ParseID(t *testing.T) { result: nil, wantError: true, }, + { + name: "With error #6: nil value", + id: nil, + wantError: true, + }, + { + name: "With error #7: nil object value", + id: (*items.Item)(nil), + wantError: true, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { diff --git a/id/registry.go b/id/registry.go index e457b9baf639cafe88b1d72974a1e955fd711fab..0ffec0240952b742c33a4763c6ee49fa210ce4f0 100644 --- a/id/registry.go +++ b/id/registry.go @@ -61,7 +61,12 @@ func (r *Registry) FromMap(m map[string]interface{}) (*ObjectId, error) { } func (r *Registry) FromObject(v interface{}) (*ObjectId, error) { - t := reflect.TypeOf(v) + value := reflect.ValueOf(v) + if v == nil || (value.Kind() == reflect.Ptr && value.IsNil()) { + return nil, fmt.Errorf("object value is nil") + } + + t := value.Type() if handler, ok := r.handlers[t]; ok { i := handler(v) if i == nil { diff --git a/images/middleware/access_logging_middleware.go b/images/middleware/access_logging_middleware.go new file mode 100644 index 0000000000000000000000000000000000000000..0a5f5ec2374db349e5eea81ec147d8258649412f --- /dev/null +++ b/images/middleware/access_logging_middleware.go @@ -0,0 +1,53 @@ +// Code generated by gowrap. DO NOT EDIT. +// template: ../../assets/templates/middleware/access_log.tmpl +// gowrap: http://github.com/hexdigest/gowrap + +package middleware + +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/images -i Images -t ../../assets/templates/middleware/access_log.tmpl -o access_logging_middleware.go -l "" + +import ( + "context" + "time" + + "git.perx.ru/perxis/perxis-go/images" + "git.perx.ru/perxis/perxis-go/pkg/auth" + "git.perx.ru/perxis/perxis-go/pkg/files" + "go.uber.org/zap" +) + +// accessLoggingMiddleware implements images.Images that is instrumented with logging +type accessLoggingMiddleware struct { + logger *zap.Logger + next images.Images +} + +// AccessLoggingMiddleware instruments an implementation of the images.Images with simple logging +func AccessLoggingMiddleware(logger *zap.Logger) Middleware { + return func(next images.Images) images.Images { + return &accessLoggingMiddleware{ + next: next, + logger: logger, + } + } +} + +func (m *accessLoggingMiddleware) Get(ctx context.Context, source *files.File, opts *images.GetOptions) (result *files.File, err error) { + begin := time.Now() + + m.logger.Debug("Get.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("source", source), + zap.Reflect("opts", opts), + ) + + result, err = m.next.Get(ctx, source, opts) + + m.logger.Debug("Get.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("result", result), + zap.Error(err), + ) + + return result, err +} diff --git a/images/middleware/logging_middleware.go b/images/middleware/logging_middleware.go deleted file mode 100644 index a69a56ee6a236aab96b1d22340691a63e36fdc01..0000000000000000000000000000000000000000 --- a/images/middleware/logging_middleware.go +++ /dev/null @@ -1,73 +0,0 @@ -// Code generated by gowrap. DO NOT EDIT. -// template: ../../assets/templates/middleware/access_log -// gowrap: http://github.com/hexdigest/gowrap - -package middleware - -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/images -i Images -t ../../assets/templates/middleware/access_log -o logging_middleware.go -l "" - -import ( - "context" - "fmt" - "time" - - "git.perx.ru/perxis/perxis-go/images" - "git.perx.ru/perxis/perxis-go/pkg/auth" - "git.perx.ru/perxis/perxis-go/pkg/files" - "go.uber.org/zap" - "go.uber.org/zap/zapcore" -) - -// loggingMiddleware implements images.Images that is instrumented with logging -type loggingMiddleware struct { - logger *zap.Logger - next images.Images -} - -// LoggingMiddleware instruments an implementation of the images.Images with simple logging -func LoggingMiddleware(logger *zap.Logger) Middleware { - return func(next images.Images) images.Images { - return &loggingMiddleware{ - next: next, - logger: logger, - } - } -} - -func (m *loggingMiddleware) Get(ctx context.Context, source *files.File, opts *images.GetOptions) (result *files.File, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "source": source, - "opts": opts} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Get.Request", fields...) - - result, err = m.next.Get(ctx, source, opts) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "result": result, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Get.Response", fields...) - - return result, err -} diff --git a/images/middleware/middleware.go b/images/middleware/middleware.go index e29bdeb8c6e7a5e2d6b298d01069f4566481e80a..bf07dd54eb80280edf4ea7edc2ac43d66085ae2d 100644 --- a/images/middleware/middleware.go +++ b/images/middleware/middleware.go @@ -1,10 +1,10 @@ // Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/middleware +// template: ../../assets/templates/middleware/middleware.tmpl // gowrap: http://github.com/hexdigest/gowrap package middleware -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/images -i Images -t ../../assets/templates/middleware/middleware -o middleware.go -l "" +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/images -i Images -t ../../assets/templates/middleware/middleware.tmpl -o middleware.go -l "" import ( "git.perx.ru/perxis/perxis-go/images" @@ -17,12 +17,12 @@ func WithLog(s images.Images, logger *zap.Logger, log_access bool) images.Images if logger == nil { logger = zap.NewNop() } - logger = logger.Named("Images") - s = ErrorLoggingMiddleware(logger)(s) if log_access { - s = LoggingMiddleware(logger)(s) + s = AccessLoggingMiddleware(logger)(s) } + s = ErrorLoggingMiddleware(logger)(s) + s = RecoveringMiddleware(logger)(s) return s } diff --git a/images/middleware/recovering_middleware.go b/images/middleware/recovering_middleware.go index 9ad61603a2584b58f4635c9ee8296f67f047b7a5..9c0a447e802a95d3002f6e45060a2a359024ff5a 100644 --- a/images/middleware/recovering_middleware.go +++ b/images/middleware/recovering_middleware.go @@ -1,5 +1,5 @@ // Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/recovery +// template: ../../assets/templates/middleware/recovery // gowrap: http://github.com/hexdigest/gowrap package middleware diff --git a/log/middleware/logging_middleware.go b/log/middleware/logging_middleware.go deleted file mode 100644 index f693795ba6b45bc915212f968c6347a0aa7aed61..0000000000000000000000000000000000000000 --- a/log/middleware/logging_middleware.go +++ /dev/null @@ -1,145 +0,0 @@ -// Code generated by gowrap. DO NOT EDIT. -// template: ../../assets/templates/middleware/access_log -// gowrap: http://github.com/hexdigest/gowrap - -package middleware - -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/log -i Service -t ../../assets/templates/middleware/access_log -o logging_middleware.go -l "" - -import ( - "context" - "fmt" - "time" - - "git.perx.ru/perxis/perxis-go/log" - "git.perx.ru/perxis/perxis-go/pkg/auth" - "git.perx.ru/perxis/perxis-go/pkg/options" - "go.uber.org/zap" - "go.uber.org/zap/zapcore" -) - -// loggingMiddleware implements log.Service that is instrumented with logging -type loggingMiddleware struct { - logger *zap.Logger - next log.Service -} - -// LoggingMiddleware instruments an implementation of the log.Service with simple logging -func LoggingMiddleware(logger *zap.Logger) Middleware { - return func(next log.Service) log.Service { - return &loggingMiddleware{ - next: next, - logger: logger, - } - } -} - -func (m *loggingMiddleware) Delete(ctx context.Context, filter *log.Filter) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "filter": filter} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Delete.Request", fields...) - - err = m.next.Delete(ctx, filter) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Delete.Response", fields...) - - return err -} - -func (m *loggingMiddleware) Find(ctx context.Context, filter *log.Filter, options *options.FindOptions) (fp1 *log.FindResult, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "filter": filter, - "options": options} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Find.Request", fields...) - - fp1, err = m.next.Find(ctx, filter, options) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "fp1": fp1, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Find.Response", fields...) - - return fp1, err -} - -func (m *loggingMiddleware) Log(ctx context.Context, entries []*log.Entry) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "entries": entries} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Log.Request", fields...) - - err = m.next.Log(ctx, entries) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Log.Response", fields...) - - return err -} diff --git a/log/middleware/middleware.go b/log/middleware/middleware.go deleted file mode 100644 index 2fa83f77f251603392126319e61e27158b0dc3cc..0000000000000000000000000000000000000000 --- a/log/middleware/middleware.go +++ /dev/null @@ -1,28 +0,0 @@ -// Code generated by gowrap. DO NOT EDIT. -// template: ../../assets/templates/middleware/middleware -// gowrap: http://github.com/hexdigest/gowrap - -package middleware - -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/log -i Service -t ../../assets/templates/middleware/middleware -o middleware.go -l "" - -import ( - "git.perx.ru/perxis/perxis-go/log" - "go.uber.org/zap" -) - -type Middleware func(log.Service) log.Service - -func WithLog(s log.Service, logger *zap.Logger, log_access bool) log.Service { - if logger == nil { - logger = zap.NewNop() - } - - logger = logger.Named("Service") - s = ErrorLoggingMiddleware(logger)(s) - if log_access { - s = LoggingMiddleware(logger)(s) - } - s = RecoveringMiddleware(logger)(s) - return s -} diff --git a/log/middleware/telemetry_middleware.go b/log/middleware/telemetry_middleware.go deleted file mode 100644 index f5ba0676cf727ae7d70809b789002b61afe70bf3..0000000000000000000000000000000000000000 --- a/log/middleware/telemetry_middleware.go +++ /dev/null @@ -1,221 +0,0 @@ -// Code generated by gowrap. DO NOT EDIT. -// template: ..\..\..\assets\templates\middleware\telemetry -// gowrap: http://github.com/hexdigest/gowrap - -package middleware - -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/collaborators -i log -i Service -t ../../assets/templates/middleware/telemetry -o telemetry_middleware.go -l "" - -// source template: https://github.com/hexdigest/gowrap/blob/master/templates/opentelemetry - -import ( - "context" - "time" - - "git.perx.ru/perxis/perxis-go/pkg/collaborators" - "git.perx.ru/perxis/perxis-go/pkg/telemetry/metrics" - "go.opentelemetry.io/otel" - "go.opentelemetry.io/otel/attribute" - otelmetric "go.opentelemetry.io/otel/metric" - "go.opentelemetry.io/otel/trace" -) - -// telemetryMiddleware implements collaborators.Collaborators interface instrumented with opentracing spans -type telemetryMiddleware struct { - collaborators.Collaborators - _instance string - requestMetrics *metrics.RequestMetrics - _spanDecorator func(span trace.Span, params, results map[string]interface{}) -} - -// TelemetryMiddleware returns telemetryMiddleware -func TelemetryMiddleware(base collaborators.Collaborators, instance string, spanDecorator ...func(span trace.Span, params, results map[string]interface{})) telemetryMiddleware { - requestMetrics, err := metrics.GetRequestMetrics() - if err != nil { - panic(err) - } - - d := telemetryMiddleware{ - Collaborators: base, - _instance: instance, - requestMetrics: requestMetrics, - } - - if len(spanDecorator) > 0 && spanDecorator[0] != nil { - d._spanDecorator = spanDecorator[0] - } - - return d -} - -// Get implements collaborators.Collaborators -func (_d telemetryMiddleware) Get(ctx context.Context, spaceId string, subject string) (role string, err error) { - attributes := otelmetric.WithAttributeSet(attribute.NewSet( - attribute.String("service", "Collaborators"), - attribute.String("method", "Get"), - )) - - _d.requestMetrics.Total.Add(ctx, 1, attributes) - - start := time.Now() - ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Collaborators.Get") - - defer func() { - _d.requestMetrics.DurationMilliseconds.Record(ctx, time.Since(start).Milliseconds(), attributes) - - if _d._spanDecorator != nil { - _d._spanDecorator(_span, map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId, - "subject": subject}, map[string]interface{}{ - "role": role, - "err": err}) - } else if err != nil { - _d.requestMetrics.FailedTotal.Add(ctx, 1, attributes) - - _span.RecordError(err) - _span.SetAttributes(attribute.String("event", "error")) - _span.SetAttributes(attribute.String("message", err.Error())) - } - - _span.End() - }() - return _d.Collaborators.Get(ctx, spaceId, subject) -} - -// ListCollaborators implements collaborators.Collaborators -func (_d telemetryMiddleware) ListCollaborators(ctx context.Context, spaceId string) (collaborators []*collaborators.Collaborator, err error) { - attributes := otelmetric.WithAttributeSet(attribute.NewSet( - attribute.String("service", "Collaborators"), - attribute.String("method", "ListCollaborators"), - )) - - _d.requestMetrics.Total.Add(ctx, 1, attributes) - - start := time.Now() - ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Collaborators.ListCollaborators") - - defer func() { - _d.requestMetrics.DurationMilliseconds.Record(ctx, time.Since(start).Milliseconds(), attributes) - - if _d._spanDecorator != nil { - _d._spanDecorator(_span, map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId}, map[string]interface{}{ - "collaborators": collaborators, - "err": err}) - } else if err != nil { - _d.requestMetrics.FailedTotal.Add(ctx, 1, attributes) - - _span.RecordError(err) - _span.SetAttributes(attribute.String("event", "error")) - _span.SetAttributes(attribute.String("message", err.Error())) - } - - _span.End() - }() - return _d.Collaborators.ListCollaborators(ctx, spaceId) -} - -// ListSpaces implements collaborators.Collaborators -func (_d telemetryMiddleware) ListSpaces(ctx context.Context, subject string) (spaces []*collaborators.Collaborator, err error) { - attributes := otelmetric.WithAttributeSet(attribute.NewSet( - attribute.String("service", "Collaborators"), - attribute.String("method", "ListSpaces"), - )) - - _d.requestMetrics.Total.Add(ctx, 1, attributes) - - start := time.Now() - ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Collaborators.ListSpaces") - - defer func() { - _d.requestMetrics.DurationMilliseconds.Record(ctx, time.Since(start).Milliseconds(), attributes) - - if _d._spanDecorator != nil { - _d._spanDecorator(_span, map[string]interface{}{ - "ctx": ctx, - "subject": subject}, map[string]interface{}{ - "spaces": spaces, - "err": err}) - } else if err != nil { - _d.requestMetrics.FailedTotal.Add(ctx, 1, attributes) - - _span.RecordError(err) - _span.SetAttributes(attribute.String("event", "error")) - _span.SetAttributes(attribute.String("message", err.Error())) - } - - _span.End() - }() - return _d.Collaborators.ListSpaces(ctx, subject) -} - -// Remove implements collaborators.Collaborators -func (_d telemetryMiddleware) Remove(ctx context.Context, spaceId string, subject string) (err error) { - attributes := otelmetric.WithAttributeSet(attribute.NewSet( - attribute.String("service", "Collaborators"), - attribute.String("method", "Remove"), - )) - - _d.requestMetrics.Total.Add(ctx, 1, attributes) - - start := time.Now() - ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Collaborators.Remove") - - defer func() { - _d.requestMetrics.DurationMilliseconds.Record(ctx, time.Since(start).Milliseconds(), attributes) - - if _d._spanDecorator != nil { - _d._spanDecorator(_span, map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId, - "subject": subject}, map[string]interface{}{ - "err": err}) - } else if err != nil { - _d.requestMetrics.FailedTotal.Add(ctx, 1, attributes) - - _span.RecordError(err) - _span.SetAttributes(attribute.String("event", "error")) - _span.SetAttributes(attribute.String("message", err.Error())) - } - - _span.End() - }() - return _d.Collaborators.Remove(ctx, spaceId, subject) -} - -// Set implements collaborators.Collaborators -func (_d telemetryMiddleware) Set(ctx context.Context, spaceId string, subject string, role string) (err error) { - attributes := otelmetric.WithAttributeSet(attribute.NewSet( - attribute.String("service", "Collaborators"), - attribute.String("method", "Set"), - )) - - _d.requestMetrics.Total.Add(ctx, 1, attributes) - - start := time.Now() - ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Collaborators.Set") - - defer func() { - _d.requestMetrics.DurationMilliseconds.Record(ctx, time.Since(start).Milliseconds(), attributes) - - if _d._spanDecorator != nil { - _d._spanDecorator(_span, map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId, - "subject": subject, - "role": role}, map[string]interface{}{ - "err": err}) - } else if err != nil { - _d.requestMetrics.FailedTotal.Add(ctx, 1, attributes) - - _span.RecordError(err) - _span.SetAttributes(attribute.String("event", "error")) - _span.SetAttributes(attribute.String("message", err.Error())) - } - - _span.End() - }() - return _d.Collaborators.Set(ctx, spaceId, subject, role) -} diff --git a/log/client.go b/logs/client.go similarity index 92% rename from log/client.go rename to logs/client.go index 65413f4f5ea9fd6d99b8d87bea668b6c585ba391..fc6a5b901343514c27a9f39e2c5c50ab234f1be7 100644 --- a/log/client.go +++ b/logs/client.go @@ -1,23 +1,23 @@ -package log +package logs import ( "context" errorsgrpc "git.perx.ru/perxis/perxis-go/pkg/errors/grpc" "git.perx.ru/perxis/perxis-go/pkg/options" - pb "git.perx.ru/perxis/perxis-go/proto/log" + pb "git.perx.ru/perxis/perxis-go/proto/logs" "google.golang.org/grpc" ) type Client struct { - client pb.LogServiceClient + client pb.LogsServiceClient } var _ Service = &Client{} func NewClient(conn *grpc.ClientConn) *Client { return &Client{ - client: pb.NewLogServiceClient(conn), + client: pb.NewLogsServiceClient(conn), } } diff --git a/log/log.go b/logs/log.go similarity index 98% rename from log/log.go rename to logs/log.go index 05aff704243a60e52c70a7ee57cdb50f9c5884e7..2bc9dedf82c450e54d46363fbe63eceb44b1a50d 100644 --- a/log/log.go +++ b/logs/log.go @@ -1,10 +1,10 @@ -package log +package logs import ( "time" "git.perx.ru/perxis/perxis-go/id" - pb "git.perx.ru/perxis/perxis-go/proto/log" + pb "git.perx.ru/perxis/perxis-go/proto/logs" "google.golang.org/protobuf/types/known/timestamppb" ) diff --git a/log/log_test.go b/logs/log_test.go similarity index 99% rename from log/log_test.go rename to logs/log_test.go index 72ab7d3c10459a8be5464f9bd51546f33df3e5f7..9ccb7e7065cccf5b3945339b6085a108e6b0fae2 100644 --- a/log/log_test.go +++ b/logs/log_test.go @@ -1,4 +1,4 @@ -package log +package logs import ( "testing" diff --git a/log/middleware/error_logging_middleware.go b/logs/middleware/error_logging_middleware.go similarity index 69% rename from log/middleware/error_logging_middleware.go rename to logs/middleware/error_logging_middleware.go index de13dcc4fa1d3f8edde99896cdfc24fe1a728128..5d6ab71065765f8c366dcf4f6528f944e27f87b1 100644 --- a/log/middleware/error_logging_middleware.go +++ b/logs/middleware/error_logging_middleware.go @@ -4,25 +4,25 @@ package middleware -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/log -i Service -t ../../assets/templates/middleware/error_log -o error_logging_middleware.go -l "" +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/logs -i Service -t ../../assets/templates/middleware/error_log -o error_logging_middleware.go -l "" import ( "context" - "git.perx.ru/perxis/perxis-go/log" + "git.perx.ru/perxis/perxis-go/logs" "git.perx.ru/perxis/perxis-go/pkg/options" "go.uber.org/zap" ) -// errorLoggingMiddleware implements log.Service that is instrumented with logging +// errorLoggingMiddleware implements logs.Service that is instrumented with logging type errorLoggingMiddleware struct { logger *zap.Logger - next log.Service + next logs.Service } -// ErrorLoggingMiddleware instruments an implementation of the log.Service with simple logging +// ErrorLoggingMiddleware instruments an implementation of the logs.Service with simple logging func ErrorLoggingMiddleware(logger *zap.Logger) Middleware { - return func(next log.Service) log.Service { + return func(next logs.Service) logs.Service { return &errorLoggingMiddleware{ next: next, logger: logger, @@ -30,7 +30,7 @@ func ErrorLoggingMiddleware(logger *zap.Logger) Middleware { } } -func (m *errorLoggingMiddleware) Delete(ctx context.Context, filter *log.Filter) (err error) { +func (m *errorLoggingMiddleware) Delete(ctx context.Context, filter *logs.Filter) (err error) { logger := m.logger defer func() { if err != nil { @@ -40,7 +40,7 @@ func (m *errorLoggingMiddleware) Delete(ctx context.Context, filter *log.Filter) return m.next.Delete(ctx, filter) } -func (m *errorLoggingMiddleware) Find(ctx context.Context, filter *log.Filter, options *options.FindOptions) (fp1 *log.FindResult, err error) { +func (m *errorLoggingMiddleware) Find(ctx context.Context, filter *logs.Filter, options *options.FindOptions) (fp1 *logs.FindResult, err error) { logger := m.logger defer func() { if err != nil { @@ -50,7 +50,7 @@ func (m *errorLoggingMiddleware) Find(ctx context.Context, filter *log.Filter, o return m.next.Find(ctx, filter, options) } -func (m *errorLoggingMiddleware) Log(ctx context.Context, entries []*log.Entry) (err error) { +func (m *errorLoggingMiddleware) Log(ctx context.Context, entries []*logs.Entry) (err error) { logger := m.logger defer func() { if err != nil { diff --git a/logs/middleware/logging_middleware.go b/logs/middleware/logging_middleware.go new file mode 100644 index 0000000000000000000000000000000000000000..3a425bf03a64b0f5fa6d998db8d4076f92755d29 --- /dev/null +++ b/logs/middleware/logging_middleware.go @@ -0,0 +1,89 @@ +// Code generated by gowrap. DO NOT EDIT. +// template: ../../assets/templates/middleware/access_log.tmpl +// gowrap: http://github.com/hexdigest/gowrap + +package middleware + +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/logs -i Service -t ../../assets/templates/middleware/access_log.tmpl -o logging_middleware.go -l "" + +import ( + "context" + "time" + + "git.perx.ru/perxis/perxis-go/logs" + "git.perx.ru/perxis/perxis-go/pkg/auth" + "git.perx.ru/perxis/perxis-go/pkg/options" + "go.uber.org/zap" +) + +// accessLoggingMiddleware implements logs.Service that is instrumented with logging +type accessLoggingMiddleware struct { + logger *zap.Logger + next logs.Service +} + +// AccessLoggingMiddleware instruments an implementation of the logs.Service with simple logging +func AccessLoggingMiddleware(logger *zap.Logger) Middleware { + return func(next logs.Service) logs.Service { + return &accessLoggingMiddleware{ + next: next, + logger: logger, + } + } +} + +func (m *accessLoggingMiddleware) Delete(ctx context.Context, filter *logs.Filter) (err error) { + begin := time.Now() + + m.logger.Debug("Delete.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("filter", filter), + ) + + err = m.next.Delete(ctx, filter) + + m.logger.Debug("Delete.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) Find(ctx context.Context, filter *logs.Filter, options *options.FindOptions) (fp1 *logs.FindResult, err error) { + begin := time.Now() + + m.logger.Debug("Find.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("filter", filter), + zap.Reflect("options", options), + ) + + fp1, err = m.next.Find(ctx, filter, options) + + m.logger.Debug("Find.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("fp1", fp1), + zap.Error(err), + ) + + return fp1, err +} + +func (m *accessLoggingMiddleware) Log(ctx context.Context, entries []*logs.Entry) (err error) { + begin := time.Now() + + m.logger.Debug("Log.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("entries", entries), + ) + + err = m.next.Log(ctx, entries) + + m.logger.Debug("Log.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} diff --git a/logs/middleware/middleware.go b/logs/middleware/middleware.go new file mode 100644 index 0000000000000000000000000000000000000000..120d2b41cc8d392ed7ca2eff73f1f8b47c3dcc14 --- /dev/null +++ b/logs/middleware/middleware.go @@ -0,0 +1,28 @@ +// Code generated by gowrap. DO NOT EDIT. +// template: ../../assets/templates/middleware/middleware.tmpl +// gowrap: http://github.com/hexdigest/gowrap + +package middleware + +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/logs -i Service -t ../../assets/templates/middleware/middleware.tmpl -o middleware.go -l "" + +import ( + "git.perx.ru/perxis/perxis-go/logs" + "go.uber.org/zap" +) + +type Middleware func(logs.Service) logs.Service + +func WithLog(s logs.Service, logger *zap.Logger, log_access bool) logs.Service { + if logger == nil { + logger = zap.NewNop() + } + logger = logger.Named("Service") + if log_access { + s = AccessLoggingMiddleware(logger)(s) + } + s = ErrorLoggingMiddleware(logger)(s) + + s = RecoveringMiddleware(logger)(s) + return s +} diff --git a/log/middleware/recovering_middleware.go b/logs/middleware/recovering_middleware.go similarity index 72% rename from log/middleware/recovering_middleware.go rename to logs/middleware/recovering_middleware.go index b8b3de39570f3fdece8969edb24c8f4a9dbcb0cb..950963dbf13a88fb5d82cecc7f983f1a605d0f84 100644 --- a/log/middleware/recovering_middleware.go +++ b/logs/middleware/recovering_middleware.go @@ -4,26 +4,26 @@ package middleware -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/log -i Service -t ../../assets/templates/middleware/recovery -o recovering_middleware.go -l "" +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/logs -i Service -t ../../assets/templates/middleware/recovery -o recovering_middleware.go -l "" import ( "context" "fmt" - "git.perx.ru/perxis/perxis-go/log" + "git.perx.ru/perxis/perxis-go/logs" "git.perx.ru/perxis/perxis-go/pkg/options" "go.uber.org/zap" ) -// recoveringMiddleware implements log.Service that is instrumented with logging +// recoveringMiddleware implements logs.Service that is instrumented with logging type recoveringMiddleware struct { logger *zap.Logger - next log.Service + next logs.Service } -// RecoveringMiddleware instruments an implementation of the log.Service with simple logging +// RecoveringMiddleware instruments an implementation of the logs.Service with simple logging func RecoveringMiddleware(logger *zap.Logger) Middleware { - return func(next log.Service) log.Service { + return func(next logs.Service) logs.Service { return &recoveringMiddleware{ next: next, logger: logger, @@ -31,7 +31,7 @@ func RecoveringMiddleware(logger *zap.Logger) Middleware { } } -func (m *recoveringMiddleware) Delete(ctx context.Context, filter *log.Filter) (err error) { +func (m *recoveringMiddleware) Delete(ctx context.Context, filter *logs.Filter) (err error) { logger := m.logger defer func() { if r := recover(); r != nil { @@ -43,7 +43,7 @@ func (m *recoveringMiddleware) Delete(ctx context.Context, filter *log.Filter) ( return m.next.Delete(ctx, filter) } -func (m *recoveringMiddleware) Find(ctx context.Context, filter *log.Filter, options *options.FindOptions) (fp1 *log.FindResult, err error) { +func (m *recoveringMiddleware) Find(ctx context.Context, filter *logs.Filter, options *options.FindOptions) (fp1 *logs.FindResult, err error) { logger := m.logger defer func() { if r := recover(); r != nil { @@ -55,7 +55,7 @@ func (m *recoveringMiddleware) Find(ctx context.Context, filter *log.Filter, opt return m.next.Find(ctx, filter, options) } -func (m *recoveringMiddleware) Log(ctx context.Context, entries []*log.Entry) (err error) { +func (m *recoveringMiddleware) Log(ctx context.Context, entries []*logs.Entry) (err error) { logger := m.logger defer func() { if r := recover(); r != nil { diff --git a/logs/middleware/telemetry_middleware.go b/logs/middleware/telemetry_middleware.go new file mode 100644 index 0000000000000000000000000000000000000000..2aebc795b22d770c369f0445bfa543bde6828ac2 --- /dev/null +++ b/logs/middleware/telemetry_middleware.go @@ -0,0 +1,151 @@ +// Code generated by gowrap. DO NOT EDIT. +// template: ../../assets/templates/middleware/telemetry +// gowrap: http://github.com/hexdigest/gowrap + +package middleware + +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/logs -i Service -t ../../assets/templates/middleware/telemetry -o telemetry_middleware.go -l "" + +// source template: https://github.com/hexdigest/gowrap/blob/master/templates/opentelemetry + +import ( + "context" + "time" + + "git.perx.ru/perxis/perxis-go/logs" + "git.perx.ru/perxis/perxis-go/pkg/options" + "git.perx.ru/perxis/perxis-go/pkg/telemetry/metrics" + "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/attribute" + otelmetric "go.opentelemetry.io/otel/metric" + "go.opentelemetry.io/otel/trace" +) + +// telemetryMiddleware implements logs.Service interface instrumented with opentracing spans +type telemetryMiddleware struct { + logs.Service + _instance string + requestMetrics *metrics.RequestMetrics + _spanDecorator func(span trace.Span, params, results map[string]interface{}) +} + +// TelemetryMiddleware returns telemetryMiddleware +func TelemetryMiddleware(base logs.Service, instance string, spanDecorator ...func(span trace.Span, params, results map[string]interface{})) telemetryMiddleware { + requestMetrics, err := metrics.GetRequestMetrics() + if err != nil { + panic(err) + } + + d := telemetryMiddleware{ + Service: base, + _instance: instance, + requestMetrics: requestMetrics, + } + + if len(spanDecorator) > 0 && spanDecorator[0] != nil { + d._spanDecorator = spanDecorator[0] + } + + return d +} + +// Delete implements logs.Service +func (_d telemetryMiddleware) Delete(ctx context.Context, filter *logs.Filter) (err error) { + attributes := otelmetric.WithAttributeSet(attribute.NewSet( + attribute.String("service", "Service"), + attribute.String("method", "Delete"), + )) + + _d.requestMetrics.Total.Add(ctx, 1, attributes) + + start := time.Now() + ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Service.Delete") + + defer func() { + _d.requestMetrics.DurationMilliseconds.Record(ctx, time.Since(start).Milliseconds(), attributes) + + if _d._spanDecorator != nil { + _d._spanDecorator(_span, map[string]interface{}{ + "ctx": ctx, + "filter": filter}, map[string]interface{}{ + "err": err}) + } else if err != nil { + _d.requestMetrics.FailedTotal.Add(ctx, 1, attributes) + + _span.RecordError(err) + _span.SetAttributes(attribute.String("event", "error")) + _span.SetAttributes(attribute.String("message", err.Error())) + } + + _span.End() + }() + return _d.Service.Delete(ctx, filter) +} + +// Find implements logs.Service +func (_d telemetryMiddleware) Find(ctx context.Context, filter *logs.Filter, options *options.FindOptions) (fp1 *logs.FindResult, err error) { + attributes := otelmetric.WithAttributeSet(attribute.NewSet( + attribute.String("service", "Service"), + attribute.String("method", "Find"), + )) + + _d.requestMetrics.Total.Add(ctx, 1, attributes) + + start := time.Now() + ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Service.Find") + + defer func() { + _d.requestMetrics.DurationMilliseconds.Record(ctx, time.Since(start).Milliseconds(), attributes) + + if _d._spanDecorator != nil { + _d._spanDecorator(_span, map[string]interface{}{ + "ctx": ctx, + "filter": filter, + "options": options}, map[string]interface{}{ + "fp1": fp1, + "err": err}) + } else if err != nil { + _d.requestMetrics.FailedTotal.Add(ctx, 1, attributes) + + _span.RecordError(err) + _span.SetAttributes(attribute.String("event", "error")) + _span.SetAttributes(attribute.String("message", err.Error())) + } + + _span.End() + }() + return _d.Service.Find(ctx, filter, options) +} + +// Log implements logs.Service +func (_d telemetryMiddleware) Log(ctx context.Context, entries []*logs.Entry) (err error) { + attributes := otelmetric.WithAttributeSet(attribute.NewSet( + attribute.String("service", "Service"), + attribute.String("method", "Log"), + )) + + _d.requestMetrics.Total.Add(ctx, 1, attributes) + + start := time.Now() + ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Service.Log") + + defer func() { + _d.requestMetrics.DurationMilliseconds.Record(ctx, time.Since(start).Milliseconds(), attributes) + + if _d._spanDecorator != nil { + _d._spanDecorator(_span, map[string]interface{}{ + "ctx": ctx, + "entries": entries}, map[string]interface{}{ + "err": err}) + } else if err != nil { + _d.requestMetrics.FailedTotal.Add(ctx, 1, attributes) + + _span.RecordError(err) + _span.SetAttributes(attribute.String("event", "error")) + _span.SetAttributes(attribute.String("message", err.Error())) + } + + _span.End() + }() + return _d.Service.Log(ctx, entries) +} diff --git a/log/mocks/Service.go b/logs/mocks/Service.go similarity index 98% rename from log/mocks/Service.go rename to logs/mocks/Service.go index 2957bf029c970d9fb65fc564af8d692e0d41e0de..af4da73bc4d4c7b088fbfea7e7babc4c1ba30e36 100644 --- a/log/mocks/Service.go +++ b/logs/mocks/Service.go @@ -5,7 +5,7 @@ package mocks import ( context "context" - log2 "git.perx.ru/perxis/perxis-go/log" + log2 "git.perx.ru/perxis/perxis-go/logs" mock "github.com/stretchr/testify/mock" options "git.perx.ru/perxis/perxis-go/pkg/options" diff --git a/log/mocks/Storage.go b/logs/mocks/Storage.go similarity index 98% rename from log/mocks/Storage.go rename to logs/mocks/Storage.go index 33b9b97a992bdfe985642918543e7fb590440f50..87a6376d47ee44ece2f9d2458ee05e48a162b8ca 100644 --- a/log/mocks/Storage.go +++ b/logs/mocks/Storage.go @@ -5,7 +5,7 @@ package mocks import ( context "context" - log2 "git.perx.ru/perxis/perxis-go/log" + log2 "git.perx.ru/perxis/perxis-go/logs" mock "github.com/stretchr/testify/mock" options "git.perx.ru/perxis/perxis-go/pkg/options" diff --git a/log/service.go b/logs/service.go similarity index 96% rename from log/service.go rename to logs/service.go index 46e306077d8ee3476dc1e83aa30a7501494325d5..34b3b4e61bd4b24c43dea910dcc54874deab13c5 100644 --- a/log/service.go +++ b/logs/service.go @@ -1,11 +1,11 @@ -package log +package logs import ( "context" itemstransportgrpc "git.perx.ru/perxis/perxis-go/pkg/items/transport/grpc" "git.perx.ru/perxis/perxis-go/pkg/options" - pb "git.perx.ru/perxis/perxis-go/proto/log" + pb "git.perx.ru/perxis/perxis-go/proto/logs" ) const ServiceName = "logs" diff --git a/log/storage.go b/logs/storage.go similarity index 96% rename from log/storage.go rename to logs/storage.go index fd672e53584bf283fff6f1dc9f87cc1cccc71c7e..e6271dace2fca81715c0fa2d0982191c4fa517e6 100644 --- a/log/storage.go +++ b/logs/storage.go @@ -1,4 +1,4 @@ -package log +package logs import ( "context" diff --git a/log/zap/buffered_write_syncer.go b/logs/zap/buffered_write_syncer.go similarity index 90% rename from log/zap/buffered_write_syncer.go rename to logs/zap/buffered_write_syncer.go index b6149240b4c18f6255cc66d8da330aa9b5db318a..e862a79d115ecd82bc09622276d4194d39715345 100644 --- a/log/zap/buffered_write_syncer.go +++ b/logs/zap/buffered_write_syncer.go @@ -5,7 +5,7 @@ import ( "sync" "time" - "git.perx.ru/perxis/perxis-go/log" + "git.perx.ru/perxis/perxis-go/logs" "git.perx.ru/perxis/perxis-go/pkg/auth" "git.perx.ru/perxis/perxis-go/pkg/errors" ) @@ -18,9 +18,9 @@ const ( var SyncQueueOverflow = errors.New("sync queue overflow") -// BufferedWriteSyncer это WriteSyncer, который отправляет записи в log.Service. +// BufferedWriteSyncer это WriteSyncer, который отправляет записи в logs.Service. // Когда количество буферизированных записей достигает некоторого предела или проходит определенный фиксированный интервал, -// записи отправляются в очередь для синхронизации с log.Service. +// записи отправляются в очередь для синхронизации с logs.Service. type BufferedWriteSyncer struct { // FlushInterval устанавливает интервал, через который буферизированные записи будут отправлены на синхронизацию. // @@ -28,23 +28,23 @@ type BufferedWriteSyncer struct { FlushInterval time.Duration // MaxBufferSize устанавливает максимальное количество записей, которые могут быть буферизованы. - // Когда количество буферизованных записей превысит этот порог, они будут отправлены на синхронизацию в log.Service. + // Когда количество буферизованных записей превысит этот порог, они будут отправлены на синхронизацию в logs.Service. // // Значение по умолчанию для этого параметра равно 1000. MaxBufferSize int - // MaxSyncQueueSize устанавливает максимальный размер очереди записей на синхронизацию с log.Service. + // MaxSyncQueueSize устанавливает максимальный размер очереди записей на синхронизацию с logs.Service. // // Значение по умолчанию для этого параметра равно 16. MaxSyncQueueSize int // Service сервис для хранения записей - Service log.Service + Service logs.Service wg sync.WaitGroup mu sync.RWMutex - buffer []*log.Entry - syncQueue chan []*log.Entry + buffer []*logs.Entry + syncQueue chan []*logs.Entry flushStop chan struct{} // flushStop закрывается, когда flushLoop должен быть остановлен started bool // started указывает, был ли выполнен Start @@ -68,8 +68,8 @@ func (ws *BufferedWriteSyncer) start() { ws.MaxSyncQueueSize = defaultMaxSyncQueueSize } - ws.buffer = make([]*log.Entry, 0, ws.MaxBufferSize) - ws.syncQueue = make(chan []*log.Entry, ws.MaxSyncQueueSize) + ws.buffer = make([]*logs.Entry, 0, ws.MaxBufferSize) + ws.syncQueue = make(chan []*logs.Entry, ws.MaxSyncQueueSize) ws.flushStop = make(chan struct{}) ws.wg.Add(2) @@ -101,7 +101,7 @@ func (ws *BufferedWriteSyncer) Stop() error { // Write отправляет запись в буфер. // Когда количество буферизованных записей превышает максимальный размер буфера, буферизированные записи будут отправлены на синхронизацию. -func (ws *BufferedWriteSyncer) Write(entry *log.Entry) error { +func (ws *BufferedWriteSyncer) Write(entry *logs.Entry) error { ws.mu.Lock() defer ws.mu.Unlock() @@ -149,7 +149,7 @@ func (ws *BufferedWriteSyncer) flush() error { } ws.syncQueue <- ws.buffer - ws.buffer = make([]*log.Entry, 0, ws.MaxBufferSize) + ws.buffer = make([]*logs.Entry, 0, ws.MaxBufferSize) return nil } @@ -172,7 +172,7 @@ func (ws *BufferedWriteSyncer) flushLoop() { } } -// syncLoop синхронизирует записи с log.Service. +// syncLoop синхронизирует записи с logs.Service. func (ws *BufferedWriteSyncer) syncLoop() { defer ws.wg.Done() diff --git a/log/zap/buffered_write_syncer_test.go b/logs/zap/buffered_write_syncer_test.go similarity index 78% rename from log/zap/buffered_write_syncer_test.go rename to logs/zap/buffered_write_syncer_test.go index 58d64fa9f6a612f58701e5284262b505ec190cc5..073663edc829dd1847ce416b704916ec92ccc80c 100644 --- a/log/zap/buffered_write_syncer_test.go +++ b/logs/zap/buffered_write_syncer_test.go @@ -5,8 +5,8 @@ import ( "testing" "time" - "git.perx.ru/perxis/perxis-go/log" - logmocks "git.perx.ru/perxis/perxis-go/log/mocks" + "git.perx.ru/perxis/perxis-go/logs" + logmocks "git.perx.ru/perxis/perxis-go/logs/mocks" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" @@ -17,17 +17,17 @@ func TestBufferedWriteSyncer_Write(t *testing.T) { service.On("Log", mock.Anything, mock.Anything). Return(nil). Run(func(args mock.Arguments) { - entries := args.Get(1).([]*log.Entry) + entries := args.Get(1).([]*logs.Entry) require.Equal(t, 2, len(entries)) }). Once() ws := &BufferedWriteSyncer{Service: service} - err := ws.Write(&log.Entry{Message: "first log message"}) + err := ws.Write(&logs.Entry{Message: "first log message"}) require.NoError(t, err) - err = ws.Write(&log.Entry{Message: "second log message"}) + err = ws.Write(&logs.Entry{Message: "second log message"}) require.NoError(t, err) err = ws.Stop() @@ -41,7 +41,7 @@ func TestBufferedWriteSyncer_Write_Concurrent(t *testing.T) { service.On("Log", mock.Anything, mock.Anything). Return(nil). Run(func(args mock.Arguments) { - entries := args.Get(1).([]*log.Entry) + entries := args.Get(1).([]*logs.Entry) require.Equal(t, 100, len(entries)) }). Once() @@ -53,7 +53,7 @@ func TestBufferedWriteSyncer_Write_Concurrent(t *testing.T) { wg.Add(1) go func(wg *sync.WaitGroup) { defer wg.Done() - require.NoError(t, ws.Write(&log.Entry{Message: "log message"})) + require.NoError(t, ws.Write(&logs.Entry{Message: "log message"})) }(&wg) } @@ -68,7 +68,7 @@ func TestBufferedWriteSyncer_Flush(t *testing.T) { service.On("Log", mock.Anything, mock.Anything). Return(nil). Run(func(args mock.Arguments) { - entries := args.Get(1).([]*log.Entry) + entries := args.Get(1).([]*logs.Entry) require.Equal(t, 10, len(entries)) }). Times(10) @@ -77,7 +77,7 @@ func TestBufferedWriteSyncer_Flush(t *testing.T) { for i := 0; i < 10; i++ { for j := 0; j < 10; j++ { - require.NoError(t, ws.Write(&log.Entry{Message: "log message"})) + require.NoError(t, ws.Write(&logs.Entry{Message: "log message"})) } require.NoError(t, ws.Sync()) } @@ -92,7 +92,7 @@ func TestBufferedWriteSyncer_MaxBufferSize(t *testing.T) { service.On("Log", mock.Anything, mock.Anything). Return(nil). Run(func(args mock.Arguments) { - entries := args.Get(1).([]*log.Entry) + entries := args.Get(1).([]*logs.Entry) assert.Equal(t, 10, len(entries)) }). Times(10) @@ -100,7 +100,7 @@ func TestBufferedWriteSyncer_MaxBufferSize(t *testing.T) { ws := &BufferedWriteSyncer{Service: service, MaxBufferSize: 10} for i := 0; i < 100; i++ { - require.NoError(t, ws.Write(&log.Entry{Message: "log message"})) + require.NoError(t, ws.Write(&logs.Entry{Message: "log message"})) } require.NoError(t, ws.Stop()) @@ -113,7 +113,7 @@ func TestBufferedWriteSyncer_FlushInterval(t *testing.T) { service.On("Log", mock.Anything, mock.Anything). Return(nil). Run(func(args mock.Arguments) { - entries := args.Get(1).([]*log.Entry) + entries := args.Get(1).([]*logs.Entry) assert.Equal(t, 10, len(entries)) }). Once() @@ -121,7 +121,7 @@ func TestBufferedWriteSyncer_FlushInterval(t *testing.T) { ws := &BufferedWriteSyncer{Service: service, FlushInterval: time.Second} for j := 0; j < 10; j++ { - require.NoError(t, ws.Write(&log.Entry{Message: "log message"})) + require.NoError(t, ws.Write(&logs.Entry{Message: "log message"})) } time.Sleep(3 * time.Second) // ждем, пока сработает интервал diff --git a/log/zap/core.go b/logs/zap/core.go similarity index 87% rename from log/zap/core.go rename to logs/zap/core.go index 070e6fb84eb3ca74cd59262eb5244054967e9307..3b0c3305f685f8dfe52628dd49c1d4716fda9e91 100644 --- a/log/zap/core.go +++ b/logs/zap/core.go @@ -4,19 +4,19 @@ import ( "fmt" oid "git.perx.ru/perxis/perxis-go/id" - "git.perx.ru/perxis/perxis-go/log" + "git.perx.ru/perxis/perxis-go/logs" "git.perx.ru/perxis/perxis-go/pkg/id" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) -// WriteSyncer отвечает за хранение и синхронизацию log.Entry +// WriteSyncer отвечает за хранение и синхронизацию logs.Entry type WriteSyncer interface { - Write(entry *log.Entry) error + Write(entry *logs.Entry) error Sync() error } -// Core кодирует zapcore.Entry в log.Entry и отправляет их в WriteSyncer +// Core кодирует zapcore.Entry в logs.Entry и отправляет их в WriteSyncer type Core struct { zapcore.LevelEnabler @@ -54,7 +54,7 @@ func (core *Core) Sync() error { return core.writeSyncer.Sync() } -func (core *Core) getEntry(entry zapcore.Entry, fields []zapcore.Field) *log.Entry { +func (core *Core) getEntry(entry zapcore.Entry, fields []zapcore.Field) *logs.Entry { if len(core.fields) > 0 { fields = append(fields, core.fields...) } @@ -64,10 +64,10 @@ func (core *Core) getEntry(entry zapcore.Entry, fields []zapcore.Field) *log.Ent field.AddTo(enc) } - ent := &log.Entry{ + ent := &logs.Entry{ ID: id.GenerateNewID(), Timestamp: entry.Time, - LogLevel: log.Level(entry.Level), + LogLevel: logs.Level(entry.Level), Message: entry.Message, } diff --git a/log/zap/core_test.go b/logs/zap/core_test.go similarity index 92% rename from log/zap/core_test.go rename to logs/zap/core_test.go index 8b2d64d75c737164f38b911fcbd4a9a0e0c56101..aabe9cea3da3f4eb4da1d0696c7c6fb08753cc63 100644 --- a/log/zap/core_test.go +++ b/logs/zap/core_test.go @@ -4,7 +4,7 @@ import ( "testing" "git.perx.ru/perxis/perxis-go/id" - "git.perx.ru/perxis/perxis-go/log" + "git.perx.ru/perxis/perxis-go/logs" logzap "git.perx.ru/perxis/perxis-go/zap" "github.com/stretchr/testify/require" "go.uber.org/zap" @@ -20,7 +20,7 @@ func TestCore_getEntry(t *testing.T) { entry zapcore.Entry fields []zapcore.Field } - want *log.Entry + want *logs.Entry }{ { name: "simple", @@ -40,8 +40,8 @@ func TestCore_getEntry(t *testing.T) { logzap.Tags("tag1", "tag2", "tag3"), }, }, - want: &log.Entry{ - LogLevel: log.Level(zapcore.InfoLevel), + want: &logs.Entry{ + LogLevel: logs.Level(zapcore.InfoLevel), Message: "создан элемент коллекции", Category: "create", Component: "Items.Service", diff --git a/log/zap/example_test.go b/logs/zap/example_test.go similarity index 90% rename from log/zap/example_test.go rename to logs/zap/example_test.go index 1c506d1583240ffb3f692bd880797a69b0118c51..9dfd0aaa2f33820c72bffcdd6ecae965672ad838 100644 --- a/log/zap/example_test.go +++ b/logs/zap/example_test.go @@ -7,8 +7,8 @@ import ( "testing" "git.perx.ru/perxis/perxis-go/id" - "git.perx.ru/perxis/perxis-go/log" - logmocks "git.perx.ru/perxis/perxis-go/log/mocks" + "git.perx.ru/perxis/perxis-go/logs" + logmocks "git.perx.ru/perxis/perxis-go/logs/mocks" "git.perx.ru/perxis/perxis-go/pkg/auth" "git.perx.ru/perxis/perxis-go/pkg/items" "git.perx.ru/perxis/perxis-go/pkg/users" @@ -24,9 +24,9 @@ func TestExample(t *testing.T) { item := items.NewItem("WPNN", "9VGP", "GxNv", "W0fl", nil, nil) user := &users.User{ID: "294de355"} - wantEntries := []*log.Entry{ + wantEntries := []*logs.Entry{ { - LogLevel: log.Level(zapcore.InfoLevel), + LogLevel: logs.Level(zapcore.InfoLevel), Message: "Successfully created", Component: "Items", Event: items.EventCreateItem, @@ -35,7 +35,7 @@ func TestExample(t *testing.T) { Tags: []string{"tag1", "tag2", "tag3"}, }, { - LogLevel: log.Level(zapcore.WarnLevel), + LogLevel: logs.Level(zapcore.WarnLevel), Message: "Successfully updated", Component: "Items", Event: items.EventUpdateItem, @@ -49,8 +49,8 @@ func TestExample(t *testing.T) { service.On("Log", mock.Anything, mock.Anything). Return(nil). Run(func(args mock.Arguments) { - entries := args.Get(1).([]*log.Entry) - require.True(t, slices.EqualFunc(wantEntries, entries, func(wantEntry, gotEntry *log.Entry) bool { + entries := args.Get(1).([]*logs.Entry) + require.True(t, slices.EqualFunc(wantEntries, entries, func(wantEntry, gotEntry *logs.Entry) bool { require.NotEmpty(t, gotEntry.ID) require.NotEmpty(t, gotEntry.Timestamp) gotEntry.ID = wantEntry.ID // игнорируем ID diff --git a/perxis-proto b/perxis-proto index 78fe6a1ea7e2fe588e4107bf14ac85293b201163..f10336dc4a4f58111c12dd95afec82be18388803 160000 --- a/perxis-proto +++ b/perxis-proto @@ -1 +1 @@ -Subproject commit 78fe6a1ea7e2fe588e4107bf14ac85293b201163 +Subproject commit f10336dc4a4f58111c12dd95afec82be18388803 diff --git a/pkg/clients/middleware/access_logging_middleware.go b/pkg/clients/middleware/access_logging_middleware.go new file mode 100644 index 0000000000000000000000000000000000000000..66379ef014588aa0b6bcdb92863e00ba9f428fc5 --- /dev/null +++ b/pkg/clients/middleware/access_logging_middleware.go @@ -0,0 +1,167 @@ +// Code generated by gowrap. DO NOT EDIT. +// template: ../../../assets/templates/middleware/access_log.tmpl +// gowrap: http://github.com/hexdigest/gowrap + +package middleware + +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/clients -i Clients -t ../../../assets/templates/middleware/access_log.tmpl -o access_logging_middleware.go -l "" + +import ( + "context" + "time" + + "git.perx.ru/perxis/perxis-go/pkg/auth" + "git.perx.ru/perxis/perxis-go/pkg/clients" + "go.uber.org/zap" +) + +// accessLoggingMiddleware implements clients.Clients that is instrumented with logging +type accessLoggingMiddleware struct { + logger *zap.Logger + next clients.Clients +} + +// AccessLoggingMiddleware instruments an implementation of the clients.Clients with simple logging +func AccessLoggingMiddleware(logger *zap.Logger) Middleware { + return func(next clients.Clients) clients.Clients { + return &accessLoggingMiddleware{ + next: next, + logger: logger, + } + } +} + +func (m *accessLoggingMiddleware) Create(ctx context.Context, client *clients.Client) (created *clients.Client, err error) { + begin := time.Now() + + m.logger.Debug("Create.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("client", client), + ) + + created, err = m.next.Create(ctx, client) + + m.logger.Debug("Create.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("created", created), + zap.Error(err), + ) + + return created, err +} + +func (m *accessLoggingMiddleware) Delete(ctx context.Context, spaceId string, id string) (err error) { + begin := time.Now() + + m.logger.Debug("Delete.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + zap.Reflect("id", id), + ) + + err = m.next.Delete(ctx, spaceId, id) + + m.logger.Debug("Delete.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) Enable(ctx context.Context, spaceId string, id string, enable bool) (err error) { + begin := time.Now() + + m.logger.Debug("Enable.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + zap.Reflect("id", id), + zap.Reflect("enable", enable), + ) + + err = m.next.Enable(ctx, spaceId, id, enable) + + m.logger.Debug("Enable.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) Get(ctx context.Context, spaceId string, id string) (client *clients.Client, err error) { + begin := time.Now() + + m.logger.Debug("Get.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + zap.Reflect("id", id), + ) + + client, err = m.next.Get(ctx, spaceId, id) + + m.logger.Debug("Get.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("client", client), + zap.Error(err), + ) + + return client, err +} + +func (m *accessLoggingMiddleware) GetBy(ctx context.Context, spaceId string, params *clients.GetByParams) (client *clients.Client, err error) { + begin := time.Now() + + m.logger.Debug("GetBy.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + zap.Reflect("params", params), + ) + + client, err = m.next.GetBy(ctx, spaceId, params) + + m.logger.Debug("GetBy.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("client", client), + zap.Error(err), + ) + + return client, err +} + +func (m *accessLoggingMiddleware) List(ctx context.Context, spaceId string) (clients []*clients.Client, err error) { + begin := time.Now() + + m.logger.Debug("List.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + ) + + clients, err = m.next.List(ctx, spaceId) + + m.logger.Debug("List.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("clients", clients), + zap.Error(err), + ) + + return clients, err +} + +func (m *accessLoggingMiddleware) Update(ctx context.Context, client *clients.Client) (err error) { + begin := time.Now() + + m.logger.Debug("Update.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("client", client), + ) + + err = m.next.Update(ctx, client) + + m.logger.Debug("Update.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} diff --git a/pkg/clients/middleware/error_logging_middleware.go b/pkg/clients/middleware/error_logging_middleware.go index 0b96827a0c620ad1ca1aa5aaf6b93a821af6279d..3e60cc1d8e49f0712362a7e3e8f072571333a97a 100644 --- a/pkg/clients/middleware/error_logging_middleware.go +++ b/pkg/clients/middleware/error_logging_middleware.go @@ -1,9 +1,9 @@ -package middleware - // Code generated by gowrap. DO NOT EDIT. // template: ../../../assets/templates/middleware/error_log // gowrap: http://github.com/hexdigest/gowrap +package middleware + //go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/clients -i Clients -t ../../../assets/templates/middleware/error_log -o error_logging_middleware.go -l "" import ( diff --git a/pkg/clients/middleware/logging_middleware.go b/pkg/clients/middleware/logging_middleware.go deleted file mode 100644 index 6fa0e811c5511748b55d756742a2c81789c0cced..0000000000000000000000000000000000000000 --- a/pkg/clients/middleware/logging_middleware.go +++ /dev/null @@ -1,295 +0,0 @@ -package middleware - -// Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/access_log -// gowrap: http://github.com/hexdigest/gowrap - -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/clients -i Clients -t ../../../assets/templates/middleware/access_log -o logging_middleware.go -l "" - -import ( - "context" - "fmt" - "time" - - "git.perx.ru/perxis/perxis-go/pkg/auth" - "git.perx.ru/perxis/perxis-go/pkg/clients" - "go.uber.org/zap" - "go.uber.org/zap/zapcore" -) - -// loggingMiddleware implements clients.Clients that is instrumented with logging -type loggingMiddleware struct { - logger *zap.Logger - next clients.Clients -} - -// LoggingMiddleware instruments an implementation of the clients.Clients with simple logging -func LoggingMiddleware(logger *zap.Logger) Middleware { - return func(next clients.Clients) clients.Clients { - return &loggingMiddleware{ - next: next, - logger: logger, - } - } -} - -func (m *loggingMiddleware) Create(ctx context.Context, client *clients.Client) (created *clients.Client, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "client": client} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Create.Request", fields...) - - created, err = m.next.Create(ctx, client) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "created": created, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Create.Response", fields...) - - return created, err -} - -func (m *loggingMiddleware) Delete(ctx context.Context, spaceId string, id string) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId, - "id": id} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Delete.Request", fields...) - - err = m.next.Delete(ctx, spaceId, id) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Delete.Response", fields...) - - return err -} - -func (m *loggingMiddleware) Enable(ctx context.Context, spaceId string, id string, enable bool) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId, - "id": id, - "enable": enable} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Enable.Request", fields...) - - err = m.next.Enable(ctx, spaceId, id, enable) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Enable.Response", fields...) - - return err -} - -func (m *loggingMiddleware) Get(ctx context.Context, spaceId string, id string) (client *clients.Client, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId, - "id": id} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Get.Request", fields...) - - client, err = m.next.Get(ctx, spaceId, id) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "client": client, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Get.Response", fields...) - - return client, err -} - -func (m *loggingMiddleware) GetBy(ctx context.Context, spaceId string, params *clients.GetByParams) (client *clients.Client, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId, - "params": params} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("GetBy.Request", fields...) - - client, err = m.next.GetBy(ctx, spaceId, params) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "client": client, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("GetBy.Response", fields...) - - return client, err -} - -func (m *loggingMiddleware) List(ctx context.Context, spaceId string) (clients []*clients.Client, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("List.Request", fields...) - - clients, err = m.next.List(ctx, spaceId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "clients": clients, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("List.Response", fields...) - - return clients, err -} - -func (m *loggingMiddleware) Update(ctx context.Context, client *clients.Client) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "client": client} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Update.Request", fields...) - - err = m.next.Update(ctx, client) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Update.Response", fields...) - - return err -} diff --git a/pkg/clients/middleware/middleware.go b/pkg/clients/middleware/middleware.go index a49c9b3ebb0c041c23178d457ea5ddf2d2357d91..0c72c1660e15f147a773e2da5e2f31b469b90260 100644 --- a/pkg/clients/middleware/middleware.go +++ b/pkg/clients/middleware/middleware.go @@ -1,10 +1,10 @@ // Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/middleware +// template: ../../../assets/templates/middleware/middleware.tmpl // gowrap: http://github.com/hexdigest/gowrap package middleware -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/clients -i Clients -t ../../../assets/templates/middleware/middleware -o middleware.go -l "" +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/clients -i Clients -t ../../../assets/templates/middleware/middleware.tmpl -o middleware.go -l "" import ( "git.perx.ru/perxis/perxis-go/pkg/clients" @@ -17,12 +17,12 @@ func WithLog(s clients.Clients, logger *zap.Logger, log_access bool) clients.Cli if logger == nil { logger = zap.NewNop() } - logger = logger.Named("Clients") - s = ErrorLoggingMiddleware(logger)(s) if log_access { - s = LoggingMiddleware(logger)(s) + s = AccessLoggingMiddleware(logger)(s) } + s = ErrorLoggingMiddleware(logger)(s) + s = RecoveringMiddleware(logger)(s) return s } diff --git a/pkg/collaborators/middleware/access_logging_middleware.go b/pkg/collaborators/middleware/access_logging_middleware.go new file mode 100644 index 0000000000000000000000000000000000000000..505624ba33f2f91280d3b1dce338262f4a7405d3 --- /dev/null +++ b/pkg/collaborators/middleware/access_logging_middleware.go @@ -0,0 +1,129 @@ +// Code generated by gowrap. DO NOT EDIT. +// template: ../../../assets/templates/middleware/access_log.tmpl +// gowrap: http://github.com/hexdigest/gowrap + +package middleware + +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/collaborators -i Collaborators -t ../../../assets/templates/middleware/access_log.tmpl -o access_logging_middleware.go -l "" + +import ( + "context" + "time" + + "git.perx.ru/perxis/perxis-go/pkg/auth" + "git.perx.ru/perxis/perxis-go/pkg/collaborators" + "go.uber.org/zap" +) + +// accessLoggingMiddleware implements collaborators.Collaborators that is instrumented with logging +type accessLoggingMiddleware struct { + logger *zap.Logger + next collaborators.Collaborators +} + +// AccessLoggingMiddleware instruments an implementation of the collaborators.Collaborators with simple logging +func AccessLoggingMiddleware(logger *zap.Logger) Middleware { + return func(next collaborators.Collaborators) collaborators.Collaborators { + return &accessLoggingMiddleware{ + next: next, + logger: logger, + } + } +} + +func (m *accessLoggingMiddleware) Get(ctx context.Context, spaceId string, subject string) (role string, err error) { + begin := time.Now() + + m.logger.Debug("Get.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + zap.Reflect("subject", subject), + ) + + role, err = m.next.Get(ctx, spaceId, subject) + + m.logger.Debug("Get.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("role", role), + zap.Error(err), + ) + + return role, err +} + +func (m *accessLoggingMiddleware) ListCollaborators(ctx context.Context, spaceId string) (collaborators []*collaborators.Collaborator, err error) { + begin := time.Now() + + m.logger.Debug("ListCollaborators.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + ) + + collaborators, err = m.next.ListCollaborators(ctx, spaceId) + + m.logger.Debug("ListCollaborators.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("collaborators", collaborators), + zap.Error(err), + ) + + return collaborators, err +} + +func (m *accessLoggingMiddleware) ListSpaces(ctx context.Context, subject string) (spaces []*collaborators.Collaborator, err error) { + begin := time.Now() + + m.logger.Debug("ListSpaces.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("subject", subject), + ) + + spaces, err = m.next.ListSpaces(ctx, subject) + + m.logger.Debug("ListSpaces.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("spaces", spaces), + zap.Error(err), + ) + + return spaces, err +} + +func (m *accessLoggingMiddleware) Remove(ctx context.Context, spaceId string, subject string) (err error) { + begin := time.Now() + + m.logger.Debug("Remove.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + zap.Reflect("subject", subject), + ) + + err = m.next.Remove(ctx, spaceId, subject) + + m.logger.Debug("Remove.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) Set(ctx context.Context, spaceId string, subject string, role string) (err error) { + begin := time.Now() + + m.logger.Debug("Set.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + zap.Reflect("subject", subject), + zap.Reflect("role", role), + ) + + err = m.next.Set(ctx, spaceId, subject, role) + + m.logger.Debug("Set.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} diff --git a/pkg/collaborators/middleware/error_logging_middleware.go b/pkg/collaborators/middleware/error_logging_middleware.go index b0bc4518dad30925e41562f334e1891e2c4fb633..6f67ce3ff960815793c8c59d588b012980559334 100644 --- a/pkg/collaborators/middleware/error_logging_middleware.go +++ b/pkg/collaborators/middleware/error_logging_middleware.go @@ -1,9 +1,9 @@ -package middleware - // Code generated by gowrap. DO NOT EDIT. // template: ../../../assets/templates/middleware/error_log // gowrap: http://github.com/hexdigest/gowrap +package middleware + //go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/collaborators -i Collaborators -t ../../../assets/templates/middleware/error_log -o error_logging_middleware.go -l "" import ( diff --git a/pkg/collaborators/middleware/logging_middleware.go b/pkg/collaborators/middleware/logging_middleware.go deleted file mode 100644 index 4b4569a48b0900027cf1453779913996b5146525..0000000000000000000000000000000000000000 --- a/pkg/collaborators/middleware/logging_middleware.go +++ /dev/null @@ -1,221 +0,0 @@ -package middleware - -// Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/access_log -// gowrap: http://github.com/hexdigest/gowrap - -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/collaborators -i Collaborators -t ../../../assets/templates/middleware/access_log -o logging_middleware.go -l "" - -import ( - "context" - "fmt" - "time" - - "git.perx.ru/perxis/perxis-go/pkg/auth" - "git.perx.ru/perxis/perxis-go/pkg/collaborators" - "go.uber.org/zap" - "go.uber.org/zap/zapcore" -) - -// loggingMiddleware implements collaborators.Collaborators that is instrumented with logging -type loggingMiddleware struct { - logger *zap.Logger - next collaborators.Collaborators -} - -// LoggingMiddleware instruments an implementation of the collaborators.Collaborators with simple logging -func LoggingMiddleware(logger *zap.Logger) Middleware { - return func(next collaborators.Collaborators) collaborators.Collaborators { - return &loggingMiddleware{ - next: next, - logger: logger, - } - } -} - -func (m *loggingMiddleware) Get(ctx context.Context, spaceId string, subject string) (role string, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId, - "subject": subject} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Get.Request", fields...) - - role, err = m.next.Get(ctx, spaceId, subject) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "role": role, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Get.Response", fields...) - - return role, err -} - -func (m *loggingMiddleware) ListCollaborators(ctx context.Context, spaceId string) (collaborators []*collaborators.Collaborator, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("ListCollaborators.Request", fields...) - - collaborators, err = m.next.ListCollaborators(ctx, spaceId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "collaborators": collaborators, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("ListCollaborators.Response", fields...) - - return collaborators, err -} - -func (m *loggingMiddleware) ListSpaces(ctx context.Context, subject string) (spaces []*collaborators.Collaborator, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "subject": subject} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("ListSpaces.Request", fields...) - - spaces, err = m.next.ListSpaces(ctx, subject) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "spaces": spaces, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("ListSpaces.Response", fields...) - - return spaces, err -} - -func (m *loggingMiddleware) Remove(ctx context.Context, spaceId string, subject string) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId, - "subject": subject} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Remove.Request", fields...) - - err = m.next.Remove(ctx, spaceId, subject) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Remove.Response", fields...) - - return err -} - -func (m *loggingMiddleware) Set(ctx context.Context, spaceId string, subject string, role string) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId, - "subject": subject, - "role": role} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Set.Request", fields...) - - err = m.next.Set(ctx, spaceId, subject, role) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Set.Response", fields...) - - return err -} diff --git a/pkg/collaborators/middleware/middleware.go b/pkg/collaborators/middleware/middleware.go index 60931c8494b76be2fe0657ec0d204377e58e0c11..28f0bc687c5ee66f2395303efa502149f8394644 100644 --- a/pkg/collaborators/middleware/middleware.go +++ b/pkg/collaborators/middleware/middleware.go @@ -1,10 +1,10 @@ // Code generated by gowrap. DO NOT EDIT. -// template: ../../../../assets/templates/middleware/middleware +// template: ../../../assets/templates/middleware/middleware.tmpl // gowrap: http://github.com/hexdigest/gowrap package middleware -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/collaborators -i Collaborators -t ../../../assets/templates/middleware/middleware -o middleware.go -l "" +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/collaborators -i Collaborators -t ../../../assets/templates/middleware/middleware.tmpl -o middleware.go -l "" import ( "git.perx.ru/perxis/perxis-go/pkg/collaborators" @@ -17,12 +17,12 @@ func WithLog(s collaborators.Collaborators, logger *zap.Logger, log_access bool) if logger == nil { logger = zap.NewNop() } - logger = logger.Named("Collaborators") - s = ErrorLoggingMiddleware(logger)(s) if log_access { - s = LoggingMiddleware(logger)(s) + s = AccessLoggingMiddleware(logger)(s) } + s = ErrorLoggingMiddleware(logger)(s) + s = RecoveringMiddleware(logger)(s) return s } diff --git a/pkg/collaborators/middleware/recovering_middleware.go b/pkg/collaborators/middleware/recovering_middleware.go index 0521cce7a30c9b86cb0fe0a04d058c70a9c48cf4..2217ca1f5827cf228c537223c3181701948b50a5 100644 --- a/pkg/collaborators/middleware/recovering_middleware.go +++ b/pkg/collaborators/middleware/recovering_middleware.go @@ -1,5 +1,5 @@ // Code generated by gowrap. DO NOT EDIT. -// template: ../../../../assets/templates/middleware/recovery +// template: ../../../assets/templates/middleware/recovery // gowrap: http://github.com/hexdigest/gowrap package middleware diff --git a/pkg/collections/middleware/logging_middleware.go b/pkg/collections/middleware/logging_middleware.go index c5e2e2fb3e5bf604fdb57c8484f4a20289029da6..bf04a4aac6e1f5304e982dac0b6c77662715a1cc 100644 --- a/pkg/collections/middleware/logging_middleware.go +++ b/pkg/collections/middleware/logging_middleware.go @@ -1,11 +1,5 @@ -// Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/log.tmpl -// gowrap: http://github.com/hexdigest/gowrap - package middleware -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/collections -i Collections -t ../../../assets/templates/middleware/log.tmpl -o logging_middleware.go -l "" - import ( "context" @@ -100,11 +94,11 @@ func (m *loggingMiddleware) SetSchema(ctx context.Context, spaceId string, envId err = m.next.SetSchema(ctx, spaceId, envId, collectionId, schema) if err != nil { - logger.Error("Failed to setschema", zap.Error(err), logzap.Channels(logzap.Userlog, logzap.Syslog)) + logger.Error("Failed to set schema", zap.Error(err), logzap.Channels(logzap.Userlog, logzap.Syslog)) return } - logger.Info("Successfully setschemaed", logzap.Channels(logzap.Userlog)) + logger.Info("Successfully set schema", logzap.Channels(logzap.Userlog)) return err } @@ -115,10 +109,11 @@ func (m *loggingMiddleware) SetState(ctx context.Context, spaceId string, envId err = m.next.SetState(ctx, spaceId, envId, collectionId, state) if err != nil { - logger.Error("Failed to setstate", zap.Error(err)) + logger.Error("Failed to set state", zap.Error(err)) return } + logger.Info("Successfully set state", logzap.Channels(logzap.Userlog)) return err } diff --git a/pkg/environments/middleware/access_logging_middleware.go b/pkg/environments/middleware/access_logging_middleware.go new file mode 100644 index 0000000000000000000000000000000000000000..e357e2ec9786edb9f67a7b14445558f86938e924 --- /dev/null +++ b/pkg/environments/middleware/access_logging_middleware.go @@ -0,0 +1,187 @@ +// Code generated by gowrap. DO NOT EDIT. +// template: ../../../assets/templates/middleware/access_log.tmpl +// gowrap: http://github.com/hexdigest/gowrap + +package middleware + +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/environments -i Environments -t ../../../assets/templates/middleware/access_log.tmpl -o access_logging_middleware.go -l "" + +import ( + "context" + "time" + + "git.perx.ru/perxis/perxis-go/pkg/auth" + "git.perx.ru/perxis/perxis-go/pkg/environments" + "go.uber.org/zap" +) + +// accessLoggingMiddleware implements environments.Environments that is instrumented with logging +type accessLoggingMiddleware struct { + logger *zap.Logger + next environments.Environments +} + +// AccessLoggingMiddleware instruments an implementation of the environments.Environments with simple logging +func AccessLoggingMiddleware(logger *zap.Logger) Middleware { + return func(next environments.Environments) environments.Environments { + return &accessLoggingMiddleware{ + next: next, + logger: logger, + } + } +} + +func (m *accessLoggingMiddleware) Create(ctx context.Context, env *environments.Environment) (created *environments.Environment, err error) { + begin := time.Now() + + m.logger.Debug("Create.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("env", env), + ) + + created, err = m.next.Create(ctx, env) + + m.logger.Debug("Create.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("created", created), + zap.Error(err), + ) + + return created, err +} + +func (m *accessLoggingMiddleware) Delete(ctx context.Context, spaceId string, envId string) (err error) { + begin := time.Now() + + m.logger.Debug("Delete.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + zap.Reflect("envId", envId), + ) + + err = m.next.Delete(ctx, spaceId, envId) + + m.logger.Debug("Delete.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) Get(ctx context.Context, spaceId string, envId string) (env *environments.Environment, err error) { + begin := time.Now() + + m.logger.Debug("Get.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + zap.Reflect("envId", envId), + ) + + env, err = m.next.Get(ctx, spaceId, envId) + + m.logger.Debug("Get.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("env", env), + zap.Error(err), + ) + + return env, err +} + +func (m *accessLoggingMiddleware) List(ctx context.Context, spaceId string) (envs []*environments.Environment, err error) { + begin := time.Now() + + m.logger.Debug("List.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + ) + + envs, err = m.next.List(ctx, spaceId) + + m.logger.Debug("List.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("envs", envs), + zap.Error(err), + ) + + return envs, err +} + +func (m *accessLoggingMiddleware) Migrate(ctx context.Context, spaceId string, envId string, options ...*environments.MigrateOptions) (err error) { + begin := time.Now() + + m.logger.Debug("Migrate.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + zap.Reflect("envId", envId), + zap.Reflect("options", options), + ) + + err = m.next.Migrate(ctx, spaceId, envId, options...) + + m.logger.Debug("Migrate.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) RemoveAlias(ctx context.Context, spaceId string, envId string, alias string) (err error) { + begin := time.Now() + + m.logger.Debug("RemoveAlias.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + zap.Reflect("envId", envId), + zap.Reflect("alias", alias), + ) + + err = m.next.RemoveAlias(ctx, spaceId, envId, alias) + + m.logger.Debug("RemoveAlias.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) SetAlias(ctx context.Context, spaceId string, envId string, alias string) (err error) { + begin := time.Now() + + m.logger.Debug("SetAlias.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + zap.Reflect("envId", envId), + zap.Reflect("alias", alias), + ) + + err = m.next.SetAlias(ctx, spaceId, envId, alias) + + m.logger.Debug("SetAlias.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) Update(ctx context.Context, env *environments.Environment) (err error) { + begin := time.Now() + + m.logger.Debug("Update.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("env", env), + ) + + err = m.next.Update(ctx, env) + + m.logger.Debug("Update.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} diff --git a/pkg/environments/middleware/error_logging_middleware.go b/pkg/environments/middleware/error_logging_middleware.go index 91ff984763f696cde9f8c152f96842ae995a411e..812de4033878fe1c6d774730c68d2e6e00489751 100644 --- a/pkg/environments/middleware/error_logging_middleware.go +++ b/pkg/environments/middleware/error_logging_middleware.go @@ -1,9 +1,9 @@ -package middleware - // Code generated by gowrap. DO NOT EDIT. // template: ../../../assets/templates/middleware/error_log // gowrap: http://github.com/hexdigest/gowrap +package middleware + //go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/environments -i Environments -t ../../../assets/templates/middleware/error_log -o error_logging_middleware.go -l "" import ( diff --git a/pkg/environments/middleware/logging_middleware.go b/pkg/environments/middleware/logging_middleware.go deleted file mode 100644 index 74692e333c12a3230a03b0cf584010745fb52329..0000000000000000000000000000000000000000 --- a/pkg/environments/middleware/logging_middleware.go +++ /dev/null @@ -1,333 +0,0 @@ -package middleware - -// Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/access_log -// gowrap: http://github.com/hexdigest/gowrap - -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/environments -i Environments -t ../../../assets/templates/middleware/access_log -o logging_middleware.go -l "" - -import ( - "context" - "fmt" - "time" - - "git.perx.ru/perxis/perxis-go/pkg/auth" - "git.perx.ru/perxis/perxis-go/pkg/environments" - "go.uber.org/zap" - "go.uber.org/zap/zapcore" -) - -// loggingMiddleware implements environments.Environments that is instrumented with logging -type loggingMiddleware struct { - logger *zap.Logger - next environments.Environments -} - -// LoggingMiddleware instruments an implementation of the environments.Environments with simple logging -func LoggingMiddleware(logger *zap.Logger) Middleware { - return func(next environments.Environments) environments.Environments { - return &loggingMiddleware{ - next: next, - logger: logger, - } - } -} - -func (m *loggingMiddleware) Create(ctx context.Context, env *environments.Environment) (created *environments.Environment, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "env": env} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Create.Request", fields...) - - created, err = m.next.Create(ctx, env) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "created": created, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Create.Response", fields...) - - return created, err -} - -func (m *loggingMiddleware) Delete(ctx context.Context, spaceId string, envId string) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId, - "envId": envId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Delete.Request", fields...) - - err = m.next.Delete(ctx, spaceId, envId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Delete.Response", fields...) - - return err -} - -func (m *loggingMiddleware) Get(ctx context.Context, spaceId string, envId string) (env *environments.Environment, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId, - "envId": envId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Get.Request", fields...) - - env, err = m.next.Get(ctx, spaceId, envId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "env": env, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Get.Response", fields...) - - return env, err -} - -func (m *loggingMiddleware) List(ctx context.Context, spaceId string) (envs []*environments.Environment, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("List.Request", fields...) - - envs, err = m.next.List(ctx, spaceId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "envs": envs, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("List.Response", fields...) - - return envs, err -} - -func (m *loggingMiddleware) Migrate(ctx context.Context, spaceId string, envId string, options ...*environments.MigrateOptions) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId, - "envId": envId, - "options": options} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Migrate.Request", fields...) - - err = m.next.Migrate(ctx, spaceId, envId, options...) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Migrate.Response", fields...) - - return err -} - -func (m *loggingMiddleware) RemoveAlias(ctx context.Context, spaceId string, envId string, alias string) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId, - "envId": envId, - "alias": alias} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("RemoveAlias.Request", fields...) - - err = m.next.RemoveAlias(ctx, spaceId, envId, alias) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("RemoveAlias.Response", fields...) - - return err -} - -func (m *loggingMiddleware) SetAlias(ctx context.Context, spaceId string, envId string, alias string) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId, - "envId": envId, - "alias": alias} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("SetAlias.Request", fields...) - - err = m.next.SetAlias(ctx, spaceId, envId, alias) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("SetAlias.Response", fields...) - - return err -} - -func (m *loggingMiddleware) Update(ctx context.Context, env *environments.Environment) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "env": env} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Update.Request", fields...) - - err = m.next.Update(ctx, env) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Update.Response", fields...) - - return err -} diff --git a/pkg/environments/middleware/middleware.go b/pkg/environments/middleware/middleware.go index cfc89b98b7b17b5335afb81ea3dc5d686a9c892b..7c887417848d7cdea79681b73d7c1954318ad009 100644 --- a/pkg/environments/middleware/middleware.go +++ b/pkg/environments/middleware/middleware.go @@ -1,10 +1,10 @@ // Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/middleware +// template: ../../../assets/templates/middleware/middleware.tmpl // gowrap: http://github.com/hexdigest/gowrap package middleware -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/environments -i Environments -t ../../../assets/templates/middleware/middleware -o middleware.go -l "" +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/environments -i Environments -t ../../../assets/templates/middleware/middleware.tmpl -o middleware.go -l "" import ( "git.perx.ru/perxis/perxis-go/pkg/environments" @@ -17,12 +17,12 @@ func WithLog(s environments.Environments, logger *zap.Logger, log_access bool) e if logger == nil { logger = zap.NewNop() } - logger = logger.Named("Environments") - s = ErrorLoggingMiddleware(logger)(s) if log_access { - s = LoggingMiddleware(logger)(s) + s = AccessLoggingMiddleware(logger)(s) } + s = ErrorLoggingMiddleware(logger)(s) + s = RecoveringMiddleware(logger)(s) return s } diff --git a/pkg/extension/middleware/access_logging_middleware.go b/pkg/extension/middleware/access_logging_middleware.go new file mode 100644 index 0000000000000000000000000000000000000000..0fbd63de8991c449fc96ad49527f5e079bd88773 --- /dev/null +++ b/pkg/extension/middleware/access_logging_middleware.go @@ -0,0 +1,196 @@ +// Code generated by gowrap. DO NOT EDIT. +// template: ../../../assets/templates/middleware/access_log.tmpl +// gowrap: http://github.com/hexdigest/gowrap + +package middleware + +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/extension -i Manager -t ../../../assets/templates/middleware/access_log.tmpl -o access_logging_middleware.go -l "" + +import ( + "context" + "time" + + "git.perx.ru/perxis/perxis-go/pkg/auth" + "git.perx.ru/perxis/perxis-go/pkg/extension" + "go.uber.org/zap" +) + +// accessLoggingMiddleware implements extension.Manager that is instrumented with logging +type accessLoggingMiddleware struct { + logger *zap.Logger + next extension.Manager +} + +// AccessLoggingMiddleware instruments an implementation of the extension.Manager with simple logging +func AccessLoggingMiddleware(logger *zap.Logger) Middleware { + return func(next extension.Manager) extension.Manager { + return &accessLoggingMiddleware{ + next: next, + logger: logger, + } + } +} + +func (m *accessLoggingMiddleware) Action(ctx context.Context, in *extension.ActionRequest) (ap1 *extension.ActionResponse, err error) { + begin := time.Now() + + m.logger.Debug("Action.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("in", in), + ) + + ap1, err = m.next.Action(ctx, in) + + m.logger.Debug("Action.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("ap1", ap1), + zap.Error(err), + ) + + return ap1, err +} + +func (m *accessLoggingMiddleware) Check(ctx context.Context, in *extension.CheckRequest) (err error) { + begin := time.Now() + + m.logger.Debug("Check.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("in", in), + ) + + err = m.next.Check(ctx, in) + + m.logger.Debug("Check.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) GetDescriptor() (ep1 *extension.ExtensionDescriptor) { + begin := time.Now() + + m.logger.Debug("GetDescriptor.Request") + + ep1 = m.next.GetDescriptor() + + m.logger.Debug("GetDescriptor.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("ep1", ep1), + ) + + return ep1 +} + +func (m *accessLoggingMiddleware) Install(ctx context.Context, in *extension.InstallRequest) (err error) { + begin := time.Now() + + m.logger.Debug("Install.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("in", in), + ) + + err = m.next.Install(ctx, in) + + m.logger.Debug("Install.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) ListExtensions(ctx context.Context, space string, env string, filter *extension.ListExtensionsFilter) (ipa1 []*extension.Info, err error) { + begin := time.Now() + + m.logger.Debug("ListExtensions.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("space", space), + zap.Reflect("env", env), + zap.Reflect("filter", filter), + ) + + ipa1, err = m.next.ListExtensions(ctx, space, env, filter) + + m.logger.Debug("ListExtensions.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("ipa1", ipa1), + zap.Error(err), + ) + + return ipa1, err +} + +func (m *accessLoggingMiddleware) ListRegisteredExtensions(ctx context.Context, extensions ...string) (epa1 []*extension.ExtensionConnector, err error) { + begin := time.Now() + + m.logger.Debug("ListRegisteredExtensions.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("extensions", extensions), + ) + + epa1, err = m.next.ListRegisteredExtensions(ctx, extensions...) + + m.logger.Debug("ListRegisteredExtensions.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("epa1", epa1), + zap.Error(err), + ) + + return epa1, err +} + +func (m *accessLoggingMiddleware) RegisterExtensions(ctx context.Context, ext ...*extension.ExtensionConnector) (err error) { + begin := time.Now() + + m.logger.Debug("RegisterExtensions.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("ext", ext), + ) + + err = m.next.RegisterExtensions(ctx, ext...) + + m.logger.Debug("RegisterExtensions.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) Uninstall(ctx context.Context, in *extension.UninstallRequest) (err error) { + begin := time.Now() + + m.logger.Debug("Uninstall.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("in", in), + ) + + err = m.next.Uninstall(ctx, in) + + m.logger.Debug("Uninstall.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) UnregisterExtensions(ctx context.Context, ext ...*extension.ExtensionConnector) (err error) { + begin := time.Now() + + m.logger.Debug("UnregisterExtensions.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("ext", ext), + ) + + err = m.next.UnregisterExtensions(ctx, ext...) + + m.logger.Debug("UnregisterExtensions.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} diff --git a/pkg/extension/middleware/error_logging_middleware.go b/pkg/extension/middleware/error_logging_middleware.go index e7dec72ba015ffe7e75a7bf0736f3a20cd7f4204..474003790010e858eed9fb9ac2af71f17fb35094 100644 --- a/pkg/extension/middleware/error_logging_middleware.go +++ b/pkg/extension/middleware/error_logging_middleware.go @@ -1,9 +1,9 @@ -package middleware - // Code generated by gowrap. DO NOT EDIT. // template: ../../../assets/templates/middleware/error_log // gowrap: http://github.com/hexdigest/gowrap +package middleware + //go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/extension -i Manager -t ../../../assets/templates/middleware/error_log -o error_logging_middleware.go -l "" import ( diff --git a/pkg/extension/middleware/logging_middleware.go b/pkg/extension/middleware/logging_middleware.go deleted file mode 100644 index 8ae37929d26a9dbccf40ab1030d73b708d3d96ba..0000000000000000000000000000000000000000 --- a/pkg/extension/middleware/logging_middleware.go +++ /dev/null @@ -1,354 +0,0 @@ -package middleware - -// Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/access_log -// gowrap: http://github.com/hexdigest/gowrap - -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/extension -i Manager -t ../../../assets/templates/middleware/access_log -o logging_middleware.go -l "" - -import ( - "context" - "fmt" - "time" - - "git.perx.ru/perxis/perxis-go/pkg/auth" - "git.perx.ru/perxis/perxis-go/pkg/extension" - "go.uber.org/zap" - "go.uber.org/zap/zapcore" -) - -// loggingMiddleware implements extension.Manager that is instrumented with logging -type loggingMiddleware struct { - logger *zap.Logger - next extension.Manager -} - -// LoggingMiddleware instruments an implementation of the extension.Manager with simple logging -func LoggingMiddleware(logger *zap.Logger) Middleware { - return func(next extension.Manager) extension.Manager { - return &loggingMiddleware{ - next: next, - logger: logger, - } - } -} - -func (m *loggingMiddleware) Action(ctx context.Context, in *extension.ActionRequest) (ap1 *extension.ActionResponse, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "in": in} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Action.Request", fields...) - - ap1, err = m.next.Action(ctx, in) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "ap1": ap1, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Action.Response", fields...) - - return ap1, err -} - -func (m *loggingMiddleware) Check(ctx context.Context, in *extension.CheckRequest) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "in": in} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Check.Request", fields...) - - err = m.next.Check(ctx, in) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Check.Response", fields...) - - return err -} - -func (m *loggingMiddleware) GetDescriptor() (ep1 *extension.ExtensionDescriptor) { - begin := time.Now() - var fields []zapcore.Field - - m.logger.Debug("GetDescriptor.Request", fields...) - - ep1 = m.next.GetDescriptor() - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "ep1": ep1} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("GetDescriptor.Response", fields...) - - return ep1 -} - -func (m *loggingMiddleware) Install(ctx context.Context, in *extension.InstallRequest) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "in": in} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Install.Request", fields...) - - err = m.next.Install(ctx, in) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Install.Response", fields...) - - return err -} - -func (m *loggingMiddleware) ListExtensions(ctx context.Context, space string, env string, filter *extension.ListExtensionsFilter) (ipa1 []*extension.Info, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "space": space, - "env": env, - "filter": filter} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("ListExtensions.Request", fields...) - - ipa1, err = m.next.ListExtensions(ctx, space, env, filter) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "ipa1": ipa1, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("ListExtensions.Response", fields...) - - return ipa1, err -} - -func (m *loggingMiddleware) ListRegisteredExtensions(ctx context.Context, extensions ...string) (epa1 []*extension.ExtensionConnector, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "extensions": extensions} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("ListRegisteredExtensions.Request", fields...) - - epa1, err = m.next.ListRegisteredExtensions(ctx, extensions...) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "epa1": epa1, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("ListRegisteredExtensions.Response", fields...) - - return epa1, err -} - -func (m *loggingMiddleware) RegisterExtensions(ctx context.Context, ext ...*extension.ExtensionConnector) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "ext": ext} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("RegisterExtensions.Request", fields...) - - err = m.next.RegisterExtensions(ctx, ext...) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("RegisterExtensions.Response", fields...) - - return err -} - -func (m *loggingMiddleware) Uninstall(ctx context.Context, in *extension.UninstallRequest) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "in": in} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Uninstall.Request", fields...) - - err = m.next.Uninstall(ctx, in) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Uninstall.Response", fields...) - - return err -} - -func (m *loggingMiddleware) UnregisterExtensions(ctx context.Context, ext ...*extension.ExtensionConnector) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "ext": ext} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("UnregisterExtensions.Request", fields...) - - err = m.next.UnregisterExtensions(ctx, ext...) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("UnregisterExtensions.Response", fields...) - - return err -} diff --git a/pkg/extension/middleware/middleware.go b/pkg/extension/middleware/middleware.go index 52b8bff724419d007ece694ade348182a738ce82..f308b6a1d0af97853b6105788cd28977f6c637ac 100644 --- a/pkg/extension/middleware/middleware.go +++ b/pkg/extension/middleware/middleware.go @@ -1,10 +1,10 @@ -package middleware - // Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/middleware +// template: ../../../assets/templates/middleware/middleware.tmpl // gowrap: http://github.com/hexdigest/gowrap -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/extension -i Manager -t ../../../assets/templates/middleware/middleware -o middleware.go -l "" +package middleware + +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/extension -i Manager -t ../../../assets/templates/middleware/middleware.tmpl -o middleware.go -l "" import ( "git.perx.ru/perxis/perxis-go/pkg/extension" @@ -17,12 +17,12 @@ func WithLog(s extension.Manager, logger *zap.Logger, log_access bool) extension if logger == nil { logger = zap.NewNop() } - logger = logger.Named("Manager") - s = ErrorLoggingMiddleware(logger)(s) if log_access { - s = LoggingMiddleware(logger)(s) + s = AccessLoggingMiddleware(logger)(s) } + s = ErrorLoggingMiddleware(logger)(s) + s = RecoveringMiddleware(logger)(s) return s } diff --git a/pkg/extension/middleware/recovering_middleware.go b/pkg/extension/middleware/recovering_middleware.go index d75af3364a31dd2e0961166a3a7dca573079f4e1..54b78da481917fda0d5614f6d9158c455d4d03e6 100644 --- a/pkg/extension/middleware/recovering_middleware.go +++ b/pkg/extension/middleware/recovering_middleware.go @@ -1,9 +1,9 @@ -package middleware - // Code generated by gowrap. DO NOT EDIT. // template: ../../../assets/templates/middleware/recovery // gowrap: http://github.com/hexdigest/gowrap +package middleware + //go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/extension -i Manager -t ../../../assets/templates/middleware/recovery -o recovering_middleware.go -l "" import ( diff --git a/pkg/files/middleware/access_logging_middleware.go b/pkg/files/middleware/access_logging_middleware.go new file mode 100644 index 0000000000000000000000000000000000000000..df932a8282989e17936438b66b714dd9b4b14df6 --- /dev/null +++ b/pkg/files/middleware/access_logging_middleware.go @@ -0,0 +1,163 @@ +// Code generated by gowrap. DO NOT EDIT. +// template: ../../../assets/templates/middleware/access_log.tmpl +// gowrap: http://github.com/hexdigest/gowrap + +package middleware + +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/files -i Files -t ../../../assets/templates/middleware/access_log.tmpl -o access_logging_middleware.go -l "" + +import ( + "context" + "time" + + "git.perx.ru/perxis/perxis-go/pkg/auth" + "git.perx.ru/perxis/perxis-go/pkg/files" + "go.uber.org/zap" +) + +// accessLoggingMiddleware implements files.Files that is instrumented with logging +type accessLoggingMiddleware struct { + logger *zap.Logger + next files.Files +} + +// AccessLoggingMiddleware instruments an implementation of the files.Files with simple logging +func AccessLoggingMiddleware(logger *zap.Logger) Middleware { + return func(next files.Files) files.Files { + return &accessLoggingMiddleware{ + next: next, + logger: logger, + } + } +} + +func (m *accessLoggingMiddleware) AbortUpload(ctx context.Context, upload *files.MultipartUpload) (err error) { + begin := time.Now() + + m.logger.Debug("AbortUpload.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("upload", upload), + ) + + err = m.next.AbortUpload(ctx, upload) + + m.logger.Debug("AbortUpload.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) CompleteUpload(ctx context.Context, upload *files.MultipartUpload) (u *files.MultipartUpload, err error) { + begin := time.Now() + + m.logger.Debug("CompleteUpload.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("upload", upload), + ) + + u, err = m.next.CompleteUpload(ctx, upload) + + m.logger.Debug("CompleteUpload.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("u", u), + zap.Error(err), + ) + + return u, err +} + +func (m *accessLoggingMiddleware) DeleteFile(ctx context.Context, file *files.File) (err error) { + begin := time.Now() + + m.logger.Debug("DeleteFile.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("file", file), + ) + + err = m.next.DeleteFile(ctx, file) + + m.logger.Debug("DeleteFile.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) GetFile(ctx context.Context, file *files.File) (f *files.File, err error) { + begin := time.Now() + + m.logger.Debug("GetFile.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("file", file), + ) + + f, err = m.next.GetFile(ctx, file) + + m.logger.Debug("GetFile.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("f", f), + zap.Error(err), + ) + + return f, err +} + +func (m *accessLoggingMiddleware) MoveUpload(ctx context.Context, upload *files.MultipartUpload) (file *files.File, err error) { + begin := time.Now() + + m.logger.Debug("MoveUpload.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("upload", upload), + ) + + file, err = m.next.MoveUpload(ctx, upload) + + m.logger.Debug("MoveUpload.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("file", file), + zap.Error(err), + ) + + return file, err +} + +func (m *accessLoggingMiddleware) StartUpload(ctx context.Context, upload *files.MultipartUpload) (u *files.MultipartUpload, err error) { + begin := time.Now() + + m.logger.Debug("StartUpload.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("upload", upload), + ) + + u, err = m.next.StartUpload(ctx, upload) + + m.logger.Debug("StartUpload.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("u", u), + zap.Error(err), + ) + + return u, err +} + +func (m *accessLoggingMiddleware) Upload(ctx context.Context, file *files.File) (u *files.Upload, err error) { + begin := time.Now() + + m.logger.Debug("Upload.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("file", file), + ) + + u, err = m.next.Upload(ctx, file) + + m.logger.Debug("Upload.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("u", u), + zap.Error(err), + ) + + return u, err +} diff --git a/pkg/files/middleware/logging_middleware.go b/pkg/files/middleware/logging_middleware.go deleted file mode 100644 index b295fa68cc8367021d5fa5e00a0c850cc27c7cee..0000000000000000000000000000000000000000 --- a/pkg/files/middleware/logging_middleware.go +++ /dev/null @@ -1,291 +0,0 @@ -// Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/access_log -// gowrap: http://github.com/hexdigest/gowrap - -package middleware - -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/files -i Files -t ../../../assets/templates/middleware/access_log -o logging_middleware.go -l "" - -import ( - "context" - "fmt" - "time" - - "git.perx.ru/perxis/perxis-go/pkg/auth" - "git.perx.ru/perxis/perxis-go/pkg/files" - "go.uber.org/zap" - "go.uber.org/zap/zapcore" -) - -// loggingMiddleware implements files.Files that is instrumented with logging -type loggingMiddleware struct { - logger *zap.Logger - next files.Files -} - -// LoggingMiddleware instruments an implementation of the files.Files with simple logging -func LoggingMiddleware(logger *zap.Logger) Middleware { - return func(next files.Files) files.Files { - return &loggingMiddleware{ - next: next, - logger: logger, - } - } -} - -func (m *loggingMiddleware) AbortUpload(ctx context.Context, upload *files.MultipartUpload) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "upload": upload} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("AbortUpload.Request", fields...) - - err = m.next.AbortUpload(ctx, upload) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("AbortUpload.Response", fields...) - - return err -} - -func (m *loggingMiddleware) CompleteUpload(ctx context.Context, upload *files.MultipartUpload) (u *files.MultipartUpload, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "upload": upload} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("CompleteUpload.Request", fields...) - - u, err = m.next.CompleteUpload(ctx, upload) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "u": u, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("CompleteUpload.Response", fields...) - - return u, err -} - -func (m *loggingMiddleware) DeleteFile(ctx context.Context, file *files.File) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "file": file} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("DeleteFile.Request", fields...) - - err = m.next.DeleteFile(ctx, file) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("DeleteFile.Response", fields...) - - return err -} - -func (m *loggingMiddleware) GetFile(ctx context.Context, file *files.File) (f *files.File, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "file": file} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("GetFile.Request", fields...) - - f, err = m.next.GetFile(ctx, file) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "f": f, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("GetFile.Response", fields...) - - return f, err -} - -func (m *loggingMiddleware) MoveUpload(ctx context.Context, upload *files.MultipartUpload) (file *files.File, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "upload": upload} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("MoveUpload.Request", fields...) - - file, err = m.next.MoveUpload(ctx, upload) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "file": file, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("MoveUpload.Response", fields...) - - return file, err -} - -func (m *loggingMiddleware) StartUpload(ctx context.Context, upload *files.MultipartUpload) (u *files.MultipartUpload, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "upload": upload} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("StartUpload.Request", fields...) - - u, err = m.next.StartUpload(ctx, upload) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "u": u, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("StartUpload.Response", fields...) - - return u, err -} - -func (m *loggingMiddleware) Upload(ctx context.Context, file *files.File) (u *files.Upload, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "file": file} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Upload.Request", fields...) - - u, err = m.next.Upload(ctx, file) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "u": u, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Upload.Response", fields...) - - return u, err -} diff --git a/pkg/files/middleware/middleware.go b/pkg/files/middleware/middleware.go index 39c64f8764e904b53fcce18bf8b990424ad03149..68d4c21f67b202f8639963930c71dcd6ab1cc3f9 100644 --- a/pkg/files/middleware/middleware.go +++ b/pkg/files/middleware/middleware.go @@ -1,10 +1,10 @@ // Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/middleware +// template: ../../../assets/templates/middleware/middleware.tmpl // gowrap: http://github.com/hexdigest/gowrap package middleware -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/files -i Files -t ../../../assets/templates/middleware/middleware -o middleware.go -l "" +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/files -i Files -t ../../../assets/templates/middleware/middleware.tmpl -o middleware.go -l "" import ( "git.perx.ru/perxis/perxis-go/pkg/files" @@ -17,12 +17,12 @@ func WithLog(s files.Files, logger *zap.Logger, log_access bool) files.Files { if logger == nil { logger = zap.NewNop() } - logger = logger.Named("Files") - s = ErrorLoggingMiddleware(logger)(s) if log_access { - s = LoggingMiddleware(logger)(s) + s = AccessLoggingMiddleware(logger)(s) } + s = ErrorLoggingMiddleware(logger)(s) + s = RecoveringMiddleware(logger)(s) return s } diff --git a/pkg/invitations/middleware/access_logging_middleware.go b/pkg/invitations/middleware/access_logging_middleware.go new file mode 100644 index 0000000000000000000000000000000000000000..24a854995bed29e849ccf873f41ccd1af073cb69 --- /dev/null +++ b/pkg/invitations/middleware/access_logging_middleware.go @@ -0,0 +1,129 @@ +// Code generated by gowrap. DO NOT EDIT. +// template: ../../../assets/templates/middleware/access_log.tmpl +// gowrap: http://github.com/hexdigest/gowrap + +package middleware + +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/invitations -i Invitations -t ../../../assets/templates/middleware/access_log.tmpl -o access_logging_middleware.go -l "" + +import ( + "context" + "time" + + "git.perx.ru/perxis/perxis-go/pkg/auth" + "git.perx.ru/perxis/perxis-go/pkg/invitations" + "git.perx.ru/perxis/perxis-go/pkg/options" + "go.uber.org/zap" +) + +// accessLoggingMiddleware implements invitations.Invitations that is instrumented with logging +type accessLoggingMiddleware struct { + logger *zap.Logger + next invitations.Invitations +} + +// AccessLoggingMiddleware instruments an implementation of the invitations.Invitations with simple logging +func AccessLoggingMiddleware(logger *zap.Logger) Middleware { + return func(next invitations.Invitations) invitations.Invitations { + return &accessLoggingMiddleware{ + next: next, + logger: logger, + } + } +} + +func (m *accessLoggingMiddleware) Accept(ctx context.Context, invitationId string, userId string) (err error) { + begin := time.Now() + + m.logger.Debug("Accept.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("invitationId", invitationId), + zap.Reflect("userId", userId), + ) + + err = m.next.Accept(ctx, invitationId, userId) + + m.logger.Debug("Accept.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) Create(ctx context.Context, invitation *invitations.Invitation) (created *invitations.Invitation, err error) { + begin := time.Now() + + m.logger.Debug("Create.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("invitation", invitation), + ) + + created, err = m.next.Create(ctx, invitation) + + m.logger.Debug("Create.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("created", created), + zap.Error(err), + ) + + return created, err +} + +func (m *accessLoggingMiddleware) Delete(ctx context.Context, invitationId string) (err error) { + begin := time.Now() + + m.logger.Debug("Delete.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("invitationId", invitationId), + ) + + err = m.next.Delete(ctx, invitationId) + + m.logger.Debug("Delete.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) Find(ctx context.Context, filter *invitations.Filter, opts *options.FindOptions) (invitations []*invitations.Invitation, total int, err error) { + begin := time.Now() + + m.logger.Debug("Find.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("filter", filter), + zap.Reflect("opts", opts), + ) + + invitations, total, err = m.next.Find(ctx, filter, opts) + + m.logger.Debug("Find.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("invitations", invitations), + zap.Reflect("total", total), + zap.Error(err), + ) + + return invitations, total, err +} + +func (m *accessLoggingMiddleware) Get(ctx context.Context, invitationId string) (invitation *invitations.Invitation, err error) { + begin := time.Now() + + m.logger.Debug("Get.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("invitationId", invitationId), + ) + + invitation, err = m.next.Get(ctx, invitationId) + + m.logger.Debug("Get.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("invitation", invitation), + zap.Error(err), + ) + + return invitation, err +} diff --git a/pkg/invitations/middleware/error_logging_middleware.go b/pkg/invitations/middleware/error_logging_middleware.go index ab0a2122f23c660281716d5dbc697cc6e13de3fe..da6603acdda802808abac634896ceb7d3b92cd1b 100644 --- a/pkg/invitations/middleware/error_logging_middleware.go +++ b/pkg/invitations/middleware/error_logging_middleware.go @@ -1,9 +1,9 @@ -package middleware - // Code generated by gowrap. DO NOT EDIT. // template: ../../../assets/templates/middleware/error_log // gowrap: http://github.com/hexdigest/gowrap +package middleware + //go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/invitations -i Invitations -t ../../../assets/templates/middleware/error_log -o error_logging_middleware.go -l "" import ( diff --git a/pkg/invitations/middleware/logging_middleware.go b/pkg/invitations/middleware/logging_middleware.go deleted file mode 100644 index ac358b3e1e635bc7f410d5b6a318b4eddc231d38..0000000000000000000000000000000000000000 --- a/pkg/invitations/middleware/logging_middleware.go +++ /dev/null @@ -1,221 +0,0 @@ -package middleware - -// Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/access_log -// gowrap: http://github.com/hexdigest/gowrap - -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/invitations -i Invitations -t ../../../assets/templates/middleware/access_log -o logging_middleware.go -l "" - -import ( - "context" - "fmt" - "time" - - "git.perx.ru/perxis/perxis-go/pkg/auth" - "git.perx.ru/perxis/perxis-go/pkg/invitations" - "git.perx.ru/perxis/perxis-go/pkg/options" - "go.uber.org/zap" - "go.uber.org/zap/zapcore" -) - -// loggingMiddleware implements invitations.Invitations that is instrumented with logging -type loggingMiddleware struct { - logger *zap.Logger - next invitations.Invitations -} - -// LoggingMiddleware instruments an implementation of the invitations.Invitations with simple logging -func LoggingMiddleware(logger *zap.Logger) Middleware { - return func(next invitations.Invitations) invitations.Invitations { - return &loggingMiddleware{ - next: next, - logger: logger, - } - } -} - -func (m *loggingMiddleware) Accept(ctx context.Context, invitationId string, userId string) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "invitationId": invitationId, - "userId": userId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Accept.Request", fields...) - - err = m.next.Accept(ctx, invitationId, userId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Accept.Response", fields...) - - return err -} - -func (m *loggingMiddleware) Create(ctx context.Context, invitation *invitations.Invitation) (created *invitations.Invitation, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "invitation": invitation} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Create.Request", fields...) - - created, err = m.next.Create(ctx, invitation) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "created": created, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Create.Response", fields...) - - return created, err -} - -func (m *loggingMiddleware) Delete(ctx context.Context, invitationId string) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "invitationId": invitationId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Delete.Request", fields...) - - err = m.next.Delete(ctx, invitationId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Delete.Response", fields...) - - return err -} - -func (m *loggingMiddleware) Find(ctx context.Context, filter *invitations.Filter, opts *options.FindOptions) (invitations []*invitations.Invitation, total int, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "filter": filter, - "opts": opts} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Find.Request", fields...) - - invitations, total, err = m.next.Find(ctx, filter, opts) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "invitations": invitations, - "total": total, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Find.Response", fields...) - - return invitations, total, err -} - -func (m *loggingMiddleware) Get(ctx context.Context, invitationId string) (invitation *invitations.Invitation, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "invitationId": invitationId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Get.Request", fields...) - - invitation, err = m.next.Get(ctx, invitationId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "invitation": invitation, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Get.Response", fields...) - - return invitation, err -} diff --git a/pkg/invitations/middleware/middleware.go b/pkg/invitations/middleware/middleware.go index d4a336ba62cdbef2da5a06e4d71ecdf20491fe49..f59604ba948ade1b4fe03bc3e3cadd8de6f7cfcd 100644 --- a/pkg/invitations/middleware/middleware.go +++ b/pkg/invitations/middleware/middleware.go @@ -1,10 +1,10 @@ // Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/middleware +// template: ../../../assets/templates/middleware/middleware.tmpl // gowrap: http://github.com/hexdigest/gowrap package middleware -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/invitations -i Invitations -t ../../../assets/templates/middleware/middleware -o middleware.go -l "" +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/invitations -i Invitations -t ../../../assets/templates/middleware/middleware.tmpl -o middleware.go -l "" import ( "git.perx.ru/perxis/perxis-go/pkg/invitations" @@ -17,12 +17,12 @@ func WithLog(s invitations.Invitations, logger *zap.Logger, log_access bool) inv if logger == nil { logger = zap.NewNop() } - logger = logger.Named("Invitations") - s = ErrorLoggingMiddleware(logger)(s) if log_access { - s = LoggingMiddleware(logger)(s) + s = AccessLoggingMiddleware(logger)(s) } + s = ErrorLoggingMiddleware(logger)(s) + s = RecoveringMiddleware(logger)(s) return s } diff --git a/pkg/items/middleware/logging_middleware.go b/pkg/items/middleware/logging_middleware.go index 7b310b3304fc9c0f5b73995fdf4e369259ffc671..fe7870a831d9b90a6145ad20f4c55cb602e8ed98 100644 --- a/pkg/items/middleware/logging_middleware.go +++ b/pkg/items/middleware/logging_middleware.go @@ -45,7 +45,7 @@ func (m *loggingMiddleware) AggregatePublished(ctx context.Context, spaceId stri result, err = m.next.AggregatePublished(ctx, spaceId, envId, collectionId, filter, options...) if err != nil { - logger.Error("Failed to aggregate_published", zap.Error(err)) + logger.Error("Failed to aggregate published", zap.Error(err)) return } @@ -124,7 +124,7 @@ func (m *loggingMiddleware) FindArchived(ctx context.Context, spaceId string, en items, total, err = m.next.FindArchived(ctx, spaceId, envId, collectionId, filter, options...) if err != nil { - logger.Error("Failed to find_archived", zap.Error(err)) + logger.Error("Failed to find archived", zap.Error(err)) return } @@ -138,7 +138,7 @@ func (m *loggingMiddleware) FindPublished(ctx context.Context, spaceId string, e items, total, err = m.next.FindPublished(ctx, spaceId, envId, collectionId, filter, options...) if err != nil { - logger.Error("Failed to findpublished", zap.Error(err)) + logger.Error("Failed to find published", zap.Error(err)) return } diff --git a/pkg/items/middleware/middleware.go b/pkg/items/middleware/middleware.go index 2ce07ef94ff532af1ed3353ef5bdba6e5f6871aa..4ef6a1fd2a0e2aec25d759d75d2e40d699ad7e06 100644 --- a/pkg/items/middleware/middleware.go +++ b/pkg/items/middleware/middleware.go @@ -22,6 +22,7 @@ func WithLog(s items.Items, logger *zap.Logger, log_access bool) items.Items { s = AccessLoggingMiddleware(logger)(s) } s = LoggingMiddleware(logger)(s) + s = RecoveringMiddleware(logger)(s) return s } diff --git a/pkg/locales/middleware/access_logging_middleware.go b/pkg/locales/middleware/access_logging_middleware.go new file mode 100644 index 0000000000000000000000000000000000000000..eabb71c37756d0a7d39d6abe217f394036a69922 --- /dev/null +++ b/pkg/locales/middleware/access_logging_middleware.go @@ -0,0 +1,89 @@ +// Code generated by gowrap. DO NOT EDIT. +// template: ../../../assets/templates/middleware/access_log.tmpl +// gowrap: http://github.com/hexdigest/gowrap + +package middleware + +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/locales -i Locales -t ../../../assets/templates/middleware/access_log.tmpl -o access_logging_middleware.go -l "" + +import ( + "context" + "time" + + "git.perx.ru/perxis/perxis-go/pkg/auth" + "git.perx.ru/perxis/perxis-go/pkg/locales" + "go.uber.org/zap" +) + +// accessLoggingMiddleware implements locales.Locales that is instrumented with logging +type accessLoggingMiddleware struct { + logger *zap.Logger + next locales.Locales +} + +// AccessLoggingMiddleware instruments an implementation of the locales.Locales with simple logging +func AccessLoggingMiddleware(logger *zap.Logger) Middleware { + return func(next locales.Locales) locales.Locales { + return &accessLoggingMiddleware{ + next: next, + logger: logger, + } + } +} + +func (m *accessLoggingMiddleware) Create(ctx context.Context, locale *locales.Locale) (created *locales.Locale, err error) { + begin := time.Now() + + m.logger.Debug("Create.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("locale", locale), + ) + + created, err = m.next.Create(ctx, locale) + + m.logger.Debug("Create.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("created", created), + zap.Error(err), + ) + + return created, err +} + +func (m *accessLoggingMiddleware) Delete(ctx context.Context, spaceId string, localeId string) (err error) { + begin := time.Now() + + m.logger.Debug("Delete.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + zap.Reflect("localeId", localeId), + ) + + err = m.next.Delete(ctx, spaceId, localeId) + + m.logger.Debug("Delete.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) List(ctx context.Context, spaceId string) (locales []*locales.Locale, err error) { + begin := time.Now() + + m.logger.Debug("List.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + ) + + locales, err = m.next.List(ctx, spaceId) + + m.logger.Debug("List.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("locales", locales), + zap.Error(err), + ) + + return locales, err +} diff --git a/pkg/locales/middleware/error_logging_middleware.go b/pkg/locales/middleware/error_logging_middleware.go index 3251fc7c972217ca4480ecbc26cb65cc055504ea..a00f23a29aa8b5330e1097c670e6cc0edf5b9983 100644 --- a/pkg/locales/middleware/error_logging_middleware.go +++ b/pkg/locales/middleware/error_logging_middleware.go @@ -1,9 +1,9 @@ -package middleware - // Code generated by gowrap. DO NOT EDIT. // template: ../../../assets/templates/middleware/error_log // gowrap: http://github.com/hexdigest/gowrap +package middleware + //go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/locales -i Locales -t ../../../assets/templates/middleware/error_log -o error_logging_middleware.go -l "" import ( diff --git a/pkg/locales/middleware/logging_middleware.go b/pkg/locales/middleware/logging_middleware.go deleted file mode 100644 index 2db3ef39beb37cabf73adbfb9a3e1122f9e85387..0000000000000000000000000000000000000000 --- a/pkg/locales/middleware/logging_middleware.go +++ /dev/null @@ -1,145 +0,0 @@ -package middleware - -// Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/access_log -// gowrap: http://github.com/hexdigest/gowrap - -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/locales -i Locales -t ../../../assets/templates/middleware/access_log -o logging_middleware.go -l "" - -import ( - "context" - "fmt" - "time" - - "git.perx.ru/perxis/perxis-go/pkg/auth" - "git.perx.ru/perxis/perxis-go/pkg/locales" - "go.uber.org/zap" - "go.uber.org/zap/zapcore" -) - -// loggingMiddleware implements locales.Locales that is instrumented with logging -type loggingMiddleware struct { - logger *zap.Logger - next locales.Locales -} - -// LoggingMiddleware instruments an implementation of the locales.Locales with simple logging -func LoggingMiddleware(logger *zap.Logger) Middleware { - return func(next locales.Locales) locales.Locales { - return &loggingMiddleware{ - next: next, - logger: logger, - } - } -} - -func (m *loggingMiddleware) Create(ctx context.Context, locale *locales.Locale) (created *locales.Locale, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "locale": locale} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Create.Request", fields...) - - created, err = m.next.Create(ctx, locale) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "created": created, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Create.Response", fields...) - - return created, err -} - -func (m *loggingMiddleware) Delete(ctx context.Context, spaceId string, localeId string) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId, - "localeId": localeId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Delete.Request", fields...) - - err = m.next.Delete(ctx, spaceId, localeId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Delete.Response", fields...) - - return err -} - -func (m *loggingMiddleware) List(ctx context.Context, spaceId string) (locales []*locales.Locale, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("List.Request", fields...) - - locales, err = m.next.List(ctx, spaceId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "locales": locales, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("List.Response", fields...) - - return locales, err -} diff --git a/pkg/locales/middleware/middleware.go b/pkg/locales/middleware/middleware.go index 721829405e98efc0c47e75f8670f4e74b784998d..2598e397afafb552c16be249cfcf1ed62149339b 100644 --- a/pkg/locales/middleware/middleware.go +++ b/pkg/locales/middleware/middleware.go @@ -1,10 +1,10 @@ // Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/middleware +// template: ../../../assets/templates/middleware/middleware.tmpl // gowrap: http://github.com/hexdigest/gowrap package middleware -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/locales -i Locales -t ../../../assets/templates/middleware/middleware -o middleware.go -l "" +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/locales -i Locales -t ../../../assets/templates/middleware/middleware.tmpl -o middleware.go -l "" import ( "git.perx.ru/perxis/perxis-go/pkg/locales" @@ -17,12 +17,12 @@ func WithLog(s locales.Locales, logger *zap.Logger, log_access bool) locales.Loc if logger == nil { logger = zap.NewNop() } - logger = logger.Named("Locales") - s = ErrorLoggingMiddleware(logger)(s) if log_access { - s = LoggingMiddleware(logger)(s) + s = AccessLoggingMiddleware(logger)(s) } + s = ErrorLoggingMiddleware(logger)(s) + s = RecoveringMiddleware(logger)(s) return s } diff --git a/pkg/members/middleware/access_logging_middleware.go b/pkg/members/middleware/access_logging_middleware.go new file mode 100644 index 0000000000000000000000000000000000000000..0a062331a51f9f93d0d7c877637636d3640ef8a7 --- /dev/null +++ b/pkg/members/middleware/access_logging_middleware.go @@ -0,0 +1,147 @@ +// Code generated by gowrap. DO NOT EDIT. +// template: ../../../assets/templates/middleware/access_log.tmpl +// gowrap: http://github.com/hexdigest/gowrap + +package middleware + +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/members -i Members -t ../../../assets/templates/middleware/access_log.tmpl -o access_logging_middleware.go -l "" + +import ( + "context" + "time" + + "git.perx.ru/perxis/perxis-go/pkg/auth" + "git.perx.ru/perxis/perxis-go/pkg/members" + "go.uber.org/zap" +) + +// accessLoggingMiddleware implements members.Members that is instrumented with logging +type accessLoggingMiddleware struct { + logger *zap.Logger + next members.Members +} + +// AccessLoggingMiddleware instruments an implementation of the members.Members with simple logging +func AccessLoggingMiddleware(logger *zap.Logger) Middleware { + return func(next members.Members) members.Members { + return &accessLoggingMiddleware{ + next: next, + logger: logger, + } + } +} + +func (m *accessLoggingMiddleware) Get(ctx context.Context, orgId string, userId string) (role members.Role, err error) { + begin := time.Now() + + m.logger.Debug("Get.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("orgId", orgId), + zap.Reflect("userId", userId), + ) + + role, err = m.next.Get(ctx, orgId, userId) + + m.logger.Debug("Get.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("role", role), + zap.Error(err), + ) + + return role, err +} + +func (m *accessLoggingMiddleware) ListMembers(ctx context.Context, orgId string) (members []*members.Member, err error) { + begin := time.Now() + + m.logger.Debug("ListMembers.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("orgId", orgId), + ) + + members, err = m.next.ListMembers(ctx, orgId) + + m.logger.Debug("ListMembers.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("members", members), + zap.Error(err), + ) + + return members, err +} + +func (m *accessLoggingMiddleware) ListOrganizations(ctx context.Context, userId string) (organizations []*members.Member, err error) { + begin := time.Now() + + m.logger.Debug("ListOrganizations.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("userId", userId), + ) + + organizations, err = m.next.ListOrganizations(ctx, userId) + + m.logger.Debug("ListOrganizations.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("organizations", organizations), + zap.Error(err), + ) + + return organizations, err +} + +func (m *accessLoggingMiddleware) Remove(ctx context.Context, orgId string, userId string) (err error) { + begin := time.Now() + + m.logger.Debug("Remove.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("orgId", orgId), + zap.Reflect("userId", userId), + ) + + err = m.next.Remove(ctx, orgId, userId) + + m.logger.Debug("Remove.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) RemoveAll(ctx context.Context, orgId string) (err error) { + begin := time.Now() + + m.logger.Debug("RemoveAll.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("orgId", orgId), + ) + + err = m.next.RemoveAll(ctx, orgId) + + m.logger.Debug("RemoveAll.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) Set(ctx context.Context, orgId string, userId string, role members.Role) (err error) { + begin := time.Now() + + m.logger.Debug("Set.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("orgId", orgId), + zap.Reflect("userId", userId), + zap.Reflect("role", role), + ) + + err = m.next.Set(ctx, orgId, userId, role) + + m.logger.Debug("Set.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} diff --git a/pkg/members/middleware/error_logging_middleware.go b/pkg/members/middleware/error_logging_middleware.go index 79a92a1f2ac6f3d5854fcdf6c1f709e21ee160a7..d3c1a594983ac1bf25a8a397c12580d445b063b6 100644 --- a/pkg/members/middleware/error_logging_middleware.go +++ b/pkg/members/middleware/error_logging_middleware.go @@ -1,9 +1,9 @@ -package middleware - // Code generated by gowrap. DO NOT EDIT. // template: ../../../assets/templates/middleware/error_log // gowrap: http://github.com/hexdigest/gowrap +package middleware + //go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/members -i Members -t ../../../assets/templates/middleware/error_log -o error_logging_middleware.go -l "" import ( diff --git a/pkg/members/middleware/logging_middleware.go b/pkg/members/middleware/logging_middleware.go deleted file mode 100644 index 3136597a451cc8938c4dc326b01b9e022658293e..0000000000000000000000000000000000000000 --- a/pkg/members/middleware/logging_middleware.go +++ /dev/null @@ -1,257 +0,0 @@ -package middleware - -// Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/access_log -// gowrap: http://github.com/hexdigest/gowrap - -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/members -i Members -t ../../../assets/templates/middleware/access_log -o logging_middleware.go -l "" - -import ( - "context" - "fmt" - "time" - - "git.perx.ru/perxis/perxis-go/pkg/auth" - "git.perx.ru/perxis/perxis-go/pkg/members" - "go.uber.org/zap" - "go.uber.org/zap/zapcore" -) - -// loggingMiddleware implements members.Members that is instrumented with logging -type loggingMiddleware struct { - logger *zap.Logger - next members.Members -} - -// LoggingMiddleware instruments an implementation of the members.Members with simple logging -func LoggingMiddleware(logger *zap.Logger) Middleware { - return func(next members.Members) members.Members { - return &loggingMiddleware{ - next: next, - logger: logger, - } - } -} - -func (m *loggingMiddleware) Get(ctx context.Context, orgId string, userId string) (role members.Role, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "orgId": orgId, - "userId": userId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Get.Request", fields...) - - role, err = m.next.Get(ctx, orgId, userId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "role": role, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Get.Response", fields...) - - return role, err -} - -func (m *loggingMiddleware) ListMembers(ctx context.Context, orgId string) (members []*members.Member, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "orgId": orgId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("ListMembers.Request", fields...) - - members, err = m.next.ListMembers(ctx, orgId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "members": members, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("ListMembers.Response", fields...) - - return members, err -} - -func (m *loggingMiddleware) ListOrganizations(ctx context.Context, userId string) (organizations []*members.Member, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "userId": userId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("ListOrganizations.Request", fields...) - - organizations, err = m.next.ListOrganizations(ctx, userId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "organizations": organizations, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("ListOrganizations.Response", fields...) - - return organizations, err -} - -func (m *loggingMiddleware) Remove(ctx context.Context, orgId string, userId string) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "orgId": orgId, - "userId": userId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Remove.Request", fields...) - - err = m.next.Remove(ctx, orgId, userId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Remove.Response", fields...) - - return err -} - -func (m *loggingMiddleware) RemoveAll(ctx context.Context, orgId string) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "orgId": orgId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("RemoveAll.Request", fields...) - - err = m.next.RemoveAll(ctx, orgId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("RemoveAll.Response", fields...) - - return err -} - -func (m *loggingMiddleware) Set(ctx context.Context, orgId string, userId string, role members.Role) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "orgId": orgId, - "userId": userId, - "role": role} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Set.Request", fields...) - - err = m.next.Set(ctx, orgId, userId, role) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Set.Response", fields...) - - return err -} diff --git a/pkg/members/middleware/middleware.go b/pkg/members/middleware/middleware.go index 517bfa624a35e247d1e93f44db75a5eccaf0c721..bb491623865e21496adedb1e91987bc2205a3ce4 100644 --- a/pkg/members/middleware/middleware.go +++ b/pkg/members/middleware/middleware.go @@ -1,10 +1,10 @@ // Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/middleware +// template: ../../../assets/templates/middleware/middleware.tmpl // gowrap: http://github.com/hexdigest/gowrap package middleware -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/members -i Members -t ../../../assets/templates/middleware/middleware -o middleware.go -l "" +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/members -i Members -t ../../../assets/templates/middleware/middleware.tmpl -o middleware.go -l "" import ( "git.perx.ru/perxis/perxis-go/pkg/members" @@ -17,12 +17,12 @@ func WithLog(s members.Members, logger *zap.Logger, log_access bool) members.Mem if logger == nil { logger = zap.NewNop() } - logger = logger.Named("Members") - s = ErrorLoggingMiddleware(logger)(s) if log_access { - s = LoggingMiddleware(logger)(s) + s = AccessLoggingMiddleware(logger)(s) } + s = ErrorLoggingMiddleware(logger)(s) + s = RecoveringMiddleware(logger)(s) return s } diff --git a/pkg/members/observer/middleware/access_logging_middleware.go b/pkg/members/observer/middleware/access_logging_middleware.go new file mode 100644 index 0000000000000000000000000000000000000000..48e9da969978baf7abdad1ae3c9a92582f56d299 --- /dev/null +++ b/pkg/members/observer/middleware/access_logging_middleware.go @@ -0,0 +1,52 @@ +// Code generated by gowrap. DO NOT EDIT. +// template: ../../../../assets/templates/middleware/access_log.tmpl +// gowrap: http://github.com/hexdigest/gowrap + +package middleware + +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/members/observer -i Observer -t ../../../../assets/templates/middleware/access_log.tmpl -o access_logging_middleware.go -l "" + +import ( + "context" + "time" + + "git.perx.ru/perxis/perxis-go/pkg/auth" + "git.perx.ru/perxis/perxis-go/pkg/collaborators" + "git.perx.ru/perxis/perxis-go/pkg/members/observer" + "go.uber.org/zap" +) + +// accessLoggingMiddleware implements observer.Observer that is instrumented with logging +type accessLoggingMiddleware struct { + logger *zap.Logger + next observer.Observer +} + +// AccessLoggingMiddleware instruments an implementation of the observer.Observer with simple logging +func AccessLoggingMiddleware(logger *zap.Logger) Middleware { + return func(next observer.Observer) observer.Observer { + return &accessLoggingMiddleware{ + next: next, + logger: logger, + } + } +} + +func (m *accessLoggingMiddleware) OnCollaboratorSet(ctx context.Context, collaborator *collaborators.Collaborator) (delayedTaskID string, err error) { + begin := time.Now() + + m.logger.Debug("OnCollaboratorSet.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("collaborator", collaborator), + ) + + delayedTaskID, err = m.next.OnCollaboratorSet(ctx, collaborator) + + m.logger.Debug("OnCollaboratorSet.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("delayedTaskID", delayedTaskID), + zap.Error(err), + ) + + return delayedTaskID, err +} diff --git a/pkg/members/observer/middleware/error_logging_middleware.go b/pkg/members/observer/middleware/error_logging_middleware.go index b7184b475d626a0f4a2a53cd427a672841b38249..462eff251d5aec0648d4ef7e8d60e200896cbe6e 100644 --- a/pkg/members/observer/middleware/error_logging_middleware.go +++ b/pkg/members/observer/middleware/error_logging_middleware.go @@ -1,9 +1,9 @@ -package middleware - // Code generated by gowrap. DO NOT EDIT. // template: ../../../../assets/templates/middleware/error_log // gowrap: http://github.com/hexdigest/gowrap +package middleware + //go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/members/observer -i Observer -t ../../../../assets/templates/middleware/error_log -o error_logging_middleware.go -l "" import ( diff --git a/pkg/members/observer/middleware/logging_middleware.go b/pkg/members/observer/middleware/logging_middleware.go deleted file mode 100644 index 09f203fd21f3a3d2ecabd3279c3d1ca2a323194d..0000000000000000000000000000000000000000 --- a/pkg/members/observer/middleware/logging_middleware.go +++ /dev/null @@ -1,72 +0,0 @@ -package middleware - -// Code generated by gowrap. DO NOT EDIT. -// template: ../../../../assets/templates/middleware/access_log -// gowrap: http://github.com/hexdigest/gowrap - -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/members/observer -i Observer -t ../../../../assets/templates/middleware/access_log -o logging_middleware.go -l "" - -import ( - "context" - "fmt" - "time" - - "git.perx.ru/perxis/perxis-go/pkg/auth" - "git.perx.ru/perxis/perxis-go/pkg/collaborators" - "git.perx.ru/perxis/perxis-go/pkg/members/observer" - "go.uber.org/zap" - "go.uber.org/zap/zapcore" -) - -// loggingMiddleware implements observer.Observer that is instrumented with logging -type loggingMiddleware struct { - logger *zap.Logger - next observer.Observer -} - -// LoggingMiddleware instruments an implementation of the observer.Observer with simple logging -func LoggingMiddleware(logger *zap.Logger) Middleware { - return func(next observer.Observer) observer.Observer { - return &loggingMiddleware{ - next: next, - logger: logger, - } - } -} - -func (m *loggingMiddleware) OnCollaboratorSet(ctx context.Context, collaborator *collaborators.Collaborator) (delayedTaskID string, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "collaborator": collaborator} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("OnCollaboratorSet.Request", fields...) - - delayedTaskID, err = m.next.OnCollaboratorSet(ctx, collaborator) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "delayedTaskID": delayedTaskID, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("OnCollaboratorSet.Response", fields...) - - return delayedTaskID, err -} diff --git a/pkg/members/observer/middleware/middleware.go b/pkg/members/observer/middleware/middleware.go index f68b58c7398b341f8f3850ddb96538027a58d354..ba2dff4fee8f9ad426d951d518c18e07dc05134e 100644 --- a/pkg/members/observer/middleware/middleware.go +++ b/pkg/members/observer/middleware/middleware.go @@ -1,10 +1,10 @@ -package middleware - // Code generated by gowrap. DO NOT EDIT. -// template: ../../../../assets/templates/middleware/middleware +// template: ../../../../assets/templates/middleware/middleware.tmpl // gowrap: http://github.com/hexdigest/gowrap -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/members/observer -i Observer -t ../../../../assets/templates/middleware/middleware -o middleware.go -l "" +package middleware + +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/members/observer -i Observer -t ../../../../assets/templates/middleware/middleware.tmpl -o middleware.go -l "" import ( "git.perx.ru/perxis/perxis-go/pkg/members/observer" @@ -17,12 +17,12 @@ func WithLog(s observer.Observer, logger *zap.Logger, log_access bool) observer. if logger == nil { logger = zap.NewNop() } - logger = logger.Named("Observer") - s = ErrorLoggingMiddleware(logger)(s) if log_access { - s = LoggingMiddleware(logger)(s) + s = AccessLoggingMiddleware(logger)(s) } + s = ErrorLoggingMiddleware(logger)(s) + s = RecoveringMiddleware(logger)(s) return s } diff --git a/pkg/members/observer/middleware/recovering_middleware.go b/pkg/members/observer/middleware/recovering_middleware.go index bd576ecd2699dea927925b935bc024630420f997..f4d96995ded61101fde4a8faabf21da84000f1fb 100644 --- a/pkg/members/observer/middleware/recovering_middleware.go +++ b/pkg/members/observer/middleware/recovering_middleware.go @@ -1,9 +1,9 @@ -package middleware - // Code generated by gowrap. DO NOT EDIT. // template: ../../../../assets/templates/middleware/recovery // gowrap: http://github.com/hexdigest/gowrap +package middleware + //go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/members/observer -i Observer -t ../../../../assets/templates/middleware/recovery -o recovering_middleware.go -l "" import ( diff --git a/pkg/organizations/middleware/access_logging_middleware.go b/pkg/organizations/middleware/access_logging_middleware.go new file mode 100644 index 0000000000000000000000000000000000000000..be6e937d1dc76ba9a6d4d80acd5c6343e35eacd7 --- /dev/null +++ b/pkg/organizations/middleware/access_logging_middleware.go @@ -0,0 +1,128 @@ +// Code generated by gowrap. DO NOT EDIT. +// template: ../../../assets/templates/middleware/access_log.tmpl +// gowrap: http://github.com/hexdigest/gowrap + +package middleware + +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/organizations -i Organizations -t ../../../assets/templates/middleware/access_log.tmpl -o access_logging_middleware.go -l "" + +import ( + "context" + "time" + + "git.perx.ru/perxis/perxis-go/pkg/auth" + "git.perx.ru/perxis/perxis-go/pkg/options" + "git.perx.ru/perxis/perxis-go/pkg/organizations" + "go.uber.org/zap" +) + +// accessLoggingMiddleware implements organizations.Organizations that is instrumented with logging +type accessLoggingMiddleware struct { + logger *zap.Logger + next organizations.Organizations +} + +// AccessLoggingMiddleware instruments an implementation of the organizations.Organizations with simple logging +func AccessLoggingMiddleware(logger *zap.Logger) Middleware { + return func(next organizations.Organizations) organizations.Organizations { + return &accessLoggingMiddleware{ + next: next, + logger: logger, + } + } +} + +func (m *accessLoggingMiddleware) Create(ctx context.Context, org *organizations.Organization) (created *organizations.Organization, err error) { + begin := time.Now() + + m.logger.Debug("Create.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("org", org), + ) + + created, err = m.next.Create(ctx, org) + + m.logger.Debug("Create.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("created", created), + zap.Error(err), + ) + + return created, err +} + +func (m *accessLoggingMiddleware) Delete(ctx context.Context, orgId string) (err error) { + begin := time.Now() + + m.logger.Debug("Delete.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("orgId", orgId), + ) + + err = m.next.Delete(ctx, orgId) + + m.logger.Debug("Delete.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) Find(ctx context.Context, filter *organizations.Filter, opts *options.FindOptions) (orgs []*organizations.Organization, total int, err error) { + begin := time.Now() + + m.logger.Debug("Find.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("filter", filter), + zap.Reflect("opts", opts), + ) + + orgs, total, err = m.next.Find(ctx, filter, opts) + + m.logger.Debug("Find.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("orgs", orgs), + zap.Reflect("total", total), + zap.Error(err), + ) + + return orgs, total, err +} + +func (m *accessLoggingMiddleware) Get(ctx context.Context, orgId string) (org *organizations.Organization, err error) { + begin := time.Now() + + m.logger.Debug("Get.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("orgId", orgId), + ) + + org, err = m.next.Get(ctx, orgId) + + m.logger.Debug("Get.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("org", org), + zap.Error(err), + ) + + return org, err +} + +func (m *accessLoggingMiddleware) Update(ctx context.Context, org *organizations.Organization) (err error) { + begin := time.Now() + + m.logger.Debug("Update.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("org", org), + ) + + err = m.next.Update(ctx, org) + + m.logger.Debug("Update.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} diff --git a/pkg/organizations/middleware/error_logging_middleware.go b/pkg/organizations/middleware/error_logging_middleware.go index 1ededdd2a8f391c56909cc33ec799175380a939a..2d6db8198b885e157ba8ebcc855bb6d9dadb519c 100644 --- a/pkg/organizations/middleware/error_logging_middleware.go +++ b/pkg/organizations/middleware/error_logging_middleware.go @@ -1,9 +1,9 @@ -package middleware - // Code generated by gowrap. DO NOT EDIT. // template: ../../../assets/templates/middleware/error_log // gowrap: http://github.com/hexdigest/gowrap +package middleware + //go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/organizations -i Organizations -t ../../../assets/templates/middleware/error_log -o error_logging_middleware.go -l "" import ( diff --git a/pkg/organizations/middleware/logging_middleware.go b/pkg/organizations/middleware/logging_middleware.go deleted file mode 100644 index b1e6bc3b914ea49d0781d7ae39ddcc5c795fff45..0000000000000000000000000000000000000000 --- a/pkg/organizations/middleware/logging_middleware.go +++ /dev/null @@ -1,220 +0,0 @@ -package middleware - -// Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/access_log -// gowrap: http://github.com/hexdigest/gowrap - -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/organizations -i Organizations -t ../../../assets/templates/middleware/access_log -o logging_middleware.go -l "" - -import ( - "context" - "fmt" - "time" - - "git.perx.ru/perxis/perxis-go/pkg/auth" - "git.perx.ru/perxis/perxis-go/pkg/options" - "git.perx.ru/perxis/perxis-go/pkg/organizations" - "go.uber.org/zap" - "go.uber.org/zap/zapcore" -) - -// loggingMiddleware implements organizations.Organizations that is instrumented with logging -type loggingMiddleware struct { - logger *zap.Logger - next organizations.Organizations -} - -// LoggingMiddleware instruments an implementation of the organizations.Organizations with simple logging -func LoggingMiddleware(logger *zap.Logger) Middleware { - return func(next organizations.Organizations) organizations.Organizations { - return &loggingMiddleware{ - next: next, - logger: logger, - } - } -} - -func (m *loggingMiddleware) Create(ctx context.Context, org *organizations.Organization) (created *organizations.Organization, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "org": org} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Create.Request", fields...) - - created, err = m.next.Create(ctx, org) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "created": created, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Create.Response", fields...) - - return created, err -} - -func (m *loggingMiddleware) Delete(ctx context.Context, orgId string) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "orgId": orgId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Delete.Request", fields...) - - err = m.next.Delete(ctx, orgId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Delete.Response", fields...) - - return err -} - -func (m *loggingMiddleware) Find(ctx context.Context, filter *organizations.Filter, opts *options.FindOptions) (orgs []*organizations.Organization, total int, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "filter": filter, - "opts": opts} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Find.Request", fields...) - - orgs, total, err = m.next.Find(ctx, filter, opts) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "orgs": orgs, - "total": total, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Find.Response", fields...) - - return orgs, total, err -} - -func (m *loggingMiddleware) Get(ctx context.Context, orgId string) (org *organizations.Organization, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "orgId": orgId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Get.Request", fields...) - - org, err = m.next.Get(ctx, orgId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "org": org, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Get.Response", fields...) - - return org, err -} - -func (m *loggingMiddleware) Update(ctx context.Context, org *organizations.Organization) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "org": org} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Update.Request", fields...) - - err = m.next.Update(ctx, org) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Update.Response", fields...) - - return err -} diff --git a/pkg/organizations/middleware/middleware.go b/pkg/organizations/middleware/middleware.go index f6cf5c5527ede8c7d285cc280642ca6aa420970c..906a4c356b434fa2926a3e970bf0f32d0c0fa936 100644 --- a/pkg/organizations/middleware/middleware.go +++ b/pkg/organizations/middleware/middleware.go @@ -1,10 +1,10 @@ // Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/middleware +// template: ../../../assets/templates/middleware/middleware.tmpl // gowrap: http://github.com/hexdigest/gowrap package middleware -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/organizations -i Organizations -t ../../../assets/templates/middleware/middleware -o middleware.go -l "" +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/organizations -i Organizations -t ../../../assets/templates/middleware/middleware.tmpl -o middleware.go -l "" import ( "git.perx.ru/perxis/perxis-go/pkg/organizations" @@ -17,12 +17,12 @@ func WithLog(s organizations.Organizations, logger *zap.Logger, log_access bool) if logger == nil { logger = zap.NewNop() } - logger = logger.Named("Organizations") - s = ErrorLoggingMiddleware(logger)(s) if log_access { - s = LoggingMiddleware(logger)(s) + s = AccessLoggingMiddleware(logger)(s) } + s = ErrorLoggingMiddleware(logger)(s) + s = RecoveringMiddleware(logger)(s) return s } diff --git a/pkg/references/middleware/access_logging_middleware.go b/pkg/references/middleware/access_logging_middleware.go new file mode 100644 index 0000000000000000000000000000000000000000..c628dc11fccc175b91f0ed7fdc7f180e3a91bfb4 --- /dev/null +++ b/pkg/references/middleware/access_logging_middleware.go @@ -0,0 +1,80 @@ +// Code generated by gowrap. DO NOT EDIT. +// template: ../../../assets/templates/middleware/access_log.tmpl +// gowrap: http://github.com/hexdigest/gowrap + +package middleware + +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/references -i References -t ../../../assets/templates/middleware/access_log.tmpl -o access_logging_middleware.go -l "" + +import ( + "context" + "time" + + "git.perx.ru/perxis/perxis-go/pkg/auth" + "git.perx.ru/perxis/perxis-go/pkg/items" + "git.perx.ru/perxis/perxis-go/pkg/references" + "go.uber.org/zap" +) + +// accessLoggingMiddleware implements references.References that is instrumented with logging +type accessLoggingMiddleware struct { + logger *zap.Logger + next references.References +} + +// AccessLoggingMiddleware instruments an implementation of the references.References with simple logging +func AccessLoggingMiddleware(logger *zap.Logger) Middleware { + return func(next references.References) references.References { + return &accessLoggingMiddleware{ + next: next, + logger: logger, + } + } +} + +func (m *accessLoggingMiddleware) Get(ctx context.Context, spaceId string, envId string, references []*references.Reference) (items []*items.Item, notfound []*references.Reference, err error) { + begin := time.Now() + + m.logger.Debug("Get.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + zap.Reflect("envId", envId), + zap.Reflect("references", references), + ) + + items, notfound, err = m.next.Get(ctx, spaceId, envId, references) + + m.logger.Debug("Get.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("items", items), + zap.Reflect("notfound", notfound), + zap.Error(err), + ) + + return items, notfound, err +} + +func (m *accessLoggingMiddleware) Publish(ctx context.Context, spaceId string, envId string, references []*references.Reference, recursive bool, force bool) (published []*references.Reference, notfound []*references.Reference, unpublished []*references.Reference, err error) { + begin := time.Now() + + m.logger.Debug("Publish.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + zap.Reflect("envId", envId), + zap.Reflect("references", references), + zap.Reflect("recursive", recursive), + zap.Reflect("force", force), + ) + + published, notfound, unpublished, err = m.next.Publish(ctx, spaceId, envId, references, recursive, force) + + m.logger.Debug("Publish.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("published", published), + zap.Reflect("notfound", notfound), + zap.Reflect("unpublished", unpublished), + zap.Error(err), + ) + + return published, notfound, unpublished, err +} diff --git a/pkg/references/middleware/error_logging_middleware.go b/pkg/references/middleware/error_logging_middleware.go index 0cfbf919e5acd70dc453494d15e9e8778afcca85..b55b11679d819e42f30234d27f6f140b2d024aa8 100644 --- a/pkg/references/middleware/error_logging_middleware.go +++ b/pkg/references/middleware/error_logging_middleware.go @@ -1,10 +1,10 @@ -package middleware +// Code generated by gowrap. DO NOT EDIT. +// template: ../../../assets/templates/middleware/error_log +// gowrap: http://github.com/hexdigest/gowrap -// DO NOT EDIT! -// This code is generated with http://github.com/hexdigest/gowrap tool -// using ../../../assets/templates/middleware/error_log template +package middleware -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/references -i References -t ../../../assets/templates/middleware/error_log -o error_logging_middleware.go +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/references -i References -t ../../../assets/templates/middleware/error_log -o error_logging_middleware.go -l "" import ( "context" diff --git a/pkg/references/middleware/logging_middleware.go b/pkg/references/middleware/logging_middleware.go deleted file mode 100644 index a0f010ae99c2f9ce1eb726e5caba316379328a42..0000000000000000000000000000000000000000 --- a/pkg/references/middleware/logging_middleware.go +++ /dev/null @@ -1,118 +0,0 @@ -package middleware - -// DO NOT EDIT! -// This code is generated with http://github.com/hexdigest/gowrap tool -// using ../../../assets/templates/middleware/access_log template - -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/references -i References -t ../../../assets/templates/middleware/access_log -o logging_middleware.go - -import ( - "context" - "fmt" - "time" - - "git.perx.ru/perxis/perxis-go/pkg/auth" - "git.perx.ru/perxis/perxis-go/pkg/items" - "git.perx.ru/perxis/perxis-go/pkg/references" - "go.uber.org/zap" - "go.uber.org/zap/zapcore" -) - -// loggingMiddleware implements references.References that is instrumented with logging -type loggingMiddleware struct { - logger *zap.Logger - next references.References -} - -// LoggingMiddleware instruments an implementation of the references.References with simple logging -func LoggingMiddleware(logger *zap.Logger) Middleware { - return func(next references.References) references.References { - return &loggingMiddleware{ - next: next, - logger: logger, - } - } -} - -func (m *loggingMiddleware) Get(ctx context.Context, spaceId string, envId string, references []*references.Reference) (items []*items.Item, notfound []*references.Reference, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId, - "envId": envId, - "references": references} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Get.Request", fields...) - - items, notfound, err = m.next.Get(ctx, spaceId, envId, references) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "items": items, - "notfound": notfound, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Get.Response", fields...) - - return items, notfound, err -} - -func (m *loggingMiddleware) Publish(ctx context.Context, spaceId string, envId string, references []*references.Reference, recursive bool, force bool) (published []*references.Reference, notfound []*references.Reference, unpublished []*references.Reference, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId, - "envId": envId, - "references": references, - "recursive": recursive, - "force": force} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Publish.Request", fields...) - - published, notfound, unpublished, err = m.next.Publish(ctx, spaceId, envId, references, recursive, force) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "published": published, - "notfound": notfound, - "unpublished": unpublished, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Publish.Response", fields...) - - return published, notfound, unpublished, err -} diff --git a/pkg/references/middleware/middleware.go b/pkg/references/middleware/middleware.go index 6bd830146952e16ccabf780230d03dc6b9473a74..529a61b60265f0f77bc0a4a3be38151f7ba5334e 100644 --- a/pkg/references/middleware/middleware.go +++ b/pkg/references/middleware/middleware.go @@ -1,10 +1,10 @@ -package middleware +// Code generated by gowrap. DO NOT EDIT. +// template: ../../../assets/templates/middleware/middleware.tmpl +// gowrap: http://github.com/hexdigest/gowrap -// DO NOT EDIT! -// This code is generated with http://github.com/hexdigest/gowrap tool -// using ../../../assets/templates/middleware/middleware template +package middleware -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/references -i References -t ../../../assets/templates/middleware/middleware -o middleware.go +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/references -i References -t ../../../assets/templates/middleware/middleware.tmpl -o middleware.go -l "" import ( "git.perx.ru/perxis/perxis-go/pkg/references" @@ -17,12 +17,12 @@ func WithLog(s references.References, logger *zap.Logger, log_access bool) refer if logger == nil { logger = zap.NewNop() } - logger = logger.Named("References") - s = ErrorLoggingMiddleware(logger)(s) if log_access { - s = LoggingMiddleware(logger)(s) + s = AccessLoggingMiddleware(logger)(s) } + s = ErrorLoggingMiddleware(logger)(s) + s = RecoveringMiddleware(logger)(s) return s } diff --git a/pkg/references/middleware/recovering_middleware.go b/pkg/references/middleware/recovering_middleware.go index 070d9d22fca08a8394362b8eea6a31628d56902c..1331a96787b8ba98322ab2e4ee5764d296504066 100644 --- a/pkg/references/middleware/recovering_middleware.go +++ b/pkg/references/middleware/recovering_middleware.go @@ -1,10 +1,10 @@ -package middleware +// Code generated by gowrap. DO NOT EDIT. +// template: ../../../assets/templates/middleware/recovery +// gowrap: http://github.com/hexdigest/gowrap -// DO NOT EDIT! -// This code is generated with http://github.com/hexdigest/gowrap tool -// using ../../../assets/templates/middleware/recovery template +package middleware -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/references -i References -t ../../../assets/templates/middleware/recovery -o recovering_middleware.go +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/references -i References -t ../../../assets/templates/middleware/recovery -o recovering_middleware.go -l "" import ( "context" diff --git a/pkg/roles/middleware/access_logging_middleware.go b/pkg/roles/middleware/access_logging_middleware.go new file mode 100644 index 0000000000000000000000000000000000000000..310cdeda7c585c571263bebb6c42739a8d3074de --- /dev/null +++ b/pkg/roles/middleware/access_logging_middleware.go @@ -0,0 +1,127 @@ +// Code generated by gowrap. DO NOT EDIT. +// template: ../../../assets/templates/middleware/access_log.tmpl +// gowrap: http://github.com/hexdigest/gowrap + +package middleware + +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/roles -i Roles -t ../../../assets/templates/middleware/access_log.tmpl -o access_logging_middleware.go -l "" + +import ( + "context" + "time" + + "git.perx.ru/perxis/perxis-go/pkg/auth" + "git.perx.ru/perxis/perxis-go/pkg/roles" + "go.uber.org/zap" +) + +// accessLoggingMiddleware implements roles.Roles that is instrumented with logging +type accessLoggingMiddleware struct { + logger *zap.Logger + next roles.Roles +} + +// AccessLoggingMiddleware instruments an implementation of the roles.Roles with simple logging +func AccessLoggingMiddleware(logger *zap.Logger) Middleware { + return func(next roles.Roles) roles.Roles { + return &accessLoggingMiddleware{ + next: next, + logger: logger, + } + } +} + +func (m *accessLoggingMiddleware) Create(ctx context.Context, role *roles.Role) (created *roles.Role, err error) { + begin := time.Now() + + m.logger.Debug("Create.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("role", role), + ) + + created, err = m.next.Create(ctx, role) + + m.logger.Debug("Create.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("created", created), + zap.Error(err), + ) + + return created, err +} + +func (m *accessLoggingMiddleware) Delete(ctx context.Context, spaceId string, roleId string) (err error) { + begin := time.Now() + + m.logger.Debug("Delete.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + zap.Reflect("roleId", roleId), + ) + + err = m.next.Delete(ctx, spaceId, roleId) + + m.logger.Debug("Delete.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) Get(ctx context.Context, spaceId string, roleId string) (role *roles.Role, err error) { + begin := time.Now() + + m.logger.Debug("Get.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + zap.Reflect("roleId", roleId), + ) + + role, err = m.next.Get(ctx, spaceId, roleId) + + m.logger.Debug("Get.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("role", role), + zap.Error(err), + ) + + return role, err +} + +func (m *accessLoggingMiddleware) List(ctx context.Context, spaceId string) (roles []*roles.Role, err error) { + begin := time.Now() + + m.logger.Debug("List.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + ) + + roles, err = m.next.List(ctx, spaceId) + + m.logger.Debug("List.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("roles", roles), + zap.Error(err), + ) + + return roles, err +} + +func (m *accessLoggingMiddleware) Update(ctx context.Context, role *roles.Role) (err error) { + begin := time.Now() + + m.logger.Debug("Update.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("role", role), + ) + + err = m.next.Update(ctx, role) + + m.logger.Debug("Update.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} diff --git a/pkg/roles/middleware/error_logging_middleware.go b/pkg/roles/middleware/error_logging_middleware.go index 48f12c3d6416ade72e1567c976e78b6237a3d323..bb6073d11fef1d2763ca85855274edf4a8c71839 100644 --- a/pkg/roles/middleware/error_logging_middleware.go +++ b/pkg/roles/middleware/error_logging_middleware.go @@ -1,9 +1,9 @@ -package middleware - // Code generated by gowrap. DO NOT EDIT. // template: ../../../assets/templates/middleware/error_log // gowrap: http://github.com/hexdigest/gowrap +package middleware + //go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/roles -i Roles -t ../../../assets/templates/middleware/error_log -o error_logging_middleware.go -l "" import ( diff --git a/pkg/roles/middleware/logging_middleware.go b/pkg/roles/middleware/logging_middleware.go deleted file mode 100644 index 31d9d49245bd64eb0e2ba542e54e32f01805d007..0000000000000000000000000000000000000000 --- a/pkg/roles/middleware/logging_middleware.go +++ /dev/null @@ -1,219 +0,0 @@ -package middleware - -// Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/access_log -// gowrap: http://github.com/hexdigest/gowrap - -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/roles -i Roles -t ../../../assets/templates/middleware/access_log -o logging_middleware.go -l "" - -import ( - "context" - "fmt" - "time" - - "git.perx.ru/perxis/perxis-go/pkg/auth" - "git.perx.ru/perxis/perxis-go/pkg/roles" - "go.uber.org/zap" - "go.uber.org/zap/zapcore" -) - -// loggingMiddleware implements roles.Roles that is instrumented with logging -type loggingMiddleware struct { - logger *zap.Logger - next roles.Roles -} - -// LoggingMiddleware instruments an implementation of the roles.Roles with simple logging -func LoggingMiddleware(logger *zap.Logger) Middleware { - return func(next roles.Roles) roles.Roles { - return &loggingMiddleware{ - next: next, - logger: logger, - } - } -} - -func (m *loggingMiddleware) Create(ctx context.Context, role *roles.Role) (created *roles.Role, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "role": role} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Create.Request", fields...) - - created, err = m.next.Create(ctx, role) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "created": created, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Create.Response", fields...) - - return created, err -} - -func (m *loggingMiddleware) Delete(ctx context.Context, spaceId string, roleId string) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId, - "roleId": roleId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Delete.Request", fields...) - - err = m.next.Delete(ctx, spaceId, roleId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Delete.Response", fields...) - - return err -} - -func (m *loggingMiddleware) Get(ctx context.Context, spaceId string, roleId string) (role *roles.Role, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId, - "roleId": roleId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Get.Request", fields...) - - role, err = m.next.Get(ctx, spaceId, roleId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "role": role, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Get.Response", fields...) - - return role, err -} - -func (m *loggingMiddleware) List(ctx context.Context, spaceId string) (roles []*roles.Role, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("List.Request", fields...) - - roles, err = m.next.List(ctx, spaceId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "roles": roles, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("List.Response", fields...) - - return roles, err -} - -func (m *loggingMiddleware) Update(ctx context.Context, role *roles.Role) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "role": role} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Update.Request", fields...) - - err = m.next.Update(ctx, role) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Update.Response", fields...) - - return err -} diff --git a/pkg/roles/middleware/middleware.go b/pkg/roles/middleware/middleware.go index 6b1a8b16e0178a22a57a6f44226aa32c6dacf4eb..aaeb2da895d5aa71768e577315e549daa6a247c4 100644 --- a/pkg/roles/middleware/middleware.go +++ b/pkg/roles/middleware/middleware.go @@ -1,10 +1,10 @@ // Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/middleware +// template: ../../../assets/templates/middleware/middleware.tmpl // gowrap: http://github.com/hexdigest/gowrap package middleware -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/roles -i Roles -t ../../../assets/templates/middleware/middleware -o middleware.go -l "" +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/roles -i Roles -t ../../../assets/templates/middleware/middleware.tmpl -o middleware.go -l "" import ( "git.perx.ru/perxis/perxis-go/pkg/roles" @@ -17,12 +17,12 @@ func WithLog(s roles.Roles, logger *zap.Logger, log_access bool) roles.Roles { if logger == nil { logger = zap.NewNop() } - logger = logger.Named("Roles") - s = ErrorLoggingMiddleware(logger)(s) if log_access { - s = LoggingMiddleware(logger)(s) + s = AccessLoggingMiddleware(logger)(s) } + s = ErrorLoggingMiddleware(logger)(s) + s = RecoveringMiddleware(logger)(s) return s } diff --git a/pkg/spaces/middleware/access_logging_middleware.go b/pkg/spaces/middleware/access_logging_middleware.go new file mode 100644 index 0000000000000000000000000000000000000000..7fca51ede8a87ba31ceb7293537e32c2db4c08d7 --- /dev/null +++ b/pkg/spaces/middleware/access_logging_middleware.go @@ -0,0 +1,219 @@ +// Code generated by gowrap. DO NOT EDIT. +// template: ../../../assets/templates/middleware/access_log.tmpl +// gowrap: http://github.com/hexdigest/gowrap + +package middleware + +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/spaces -i Spaces -t ../../../assets/templates/middleware/access_log.tmpl -o access_logging_middleware.go -l "" + +import ( + "context" + "time" + + "git.perx.ru/perxis/perxis-go/pkg/auth" + "git.perx.ru/perxis/perxis-go/pkg/spaces" + "go.uber.org/zap" +) + +// accessLoggingMiddleware implements spaces.Spaces that is instrumented with logging +type accessLoggingMiddleware struct { + logger *zap.Logger + next spaces.Spaces +} + +// AccessLoggingMiddleware instruments an implementation of the spaces.Spaces with simple logging +func AccessLoggingMiddleware(logger *zap.Logger) Middleware { + return func(next spaces.Spaces) spaces.Spaces { + return &accessLoggingMiddleware{ + next: next, + logger: logger, + } + } +} + +func (m *accessLoggingMiddleware) AbortTransfer(ctx context.Context, spaceID string) (err error) { + begin := time.Now() + + m.logger.Debug("AbortTransfer.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceID", spaceID), + ) + + err = m.next.AbortTransfer(ctx, spaceID) + + m.logger.Debug("AbortTransfer.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) Create(ctx context.Context, space *spaces.Space) (created *spaces.Space, err error) { + begin := time.Now() + + m.logger.Debug("Create.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("space", space), + ) + + created, err = m.next.Create(ctx, space) + + m.logger.Debug("Create.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("created", created), + zap.Error(err), + ) + + return created, err +} + +func (m *accessLoggingMiddleware) Delete(ctx context.Context, spaceId string) (err error) { + begin := time.Now() + + m.logger.Debug("Delete.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + ) + + err = m.next.Delete(ctx, spaceId) + + m.logger.Debug("Delete.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) Get(ctx context.Context, spaceId string) (space *spaces.Space, err error) { + begin := time.Now() + + m.logger.Debug("Get.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + ) + + space, err = m.next.Get(ctx, spaceId) + + m.logger.Debug("Get.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("space", space), + zap.Error(err), + ) + + return space, err +} + +func (m *accessLoggingMiddleware) List(ctx context.Context, orgId string) (spaces []*spaces.Space, err error) { + begin := time.Now() + + m.logger.Debug("List.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("orgId", orgId), + ) + + spaces, err = m.next.List(ctx, orgId) + + m.logger.Debug("List.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("spaces", spaces), + zap.Error(err), + ) + + return spaces, err +} + +func (m *accessLoggingMiddleware) ListTransfers(ctx context.Context, orgID string) (spaces []*spaces.Space, err error) { + begin := time.Now() + + m.logger.Debug("ListTransfers.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("orgID", orgID), + ) + + spaces, err = m.next.ListTransfers(ctx, orgID) + + m.logger.Debug("ListTransfers.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("spaces", spaces), + zap.Error(err), + ) + + return spaces, err +} + +func (m *accessLoggingMiddleware) Move(ctx context.Context, spaceID string, orgID string) (err error) { + begin := time.Now() + + m.logger.Debug("Move.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceID", spaceID), + zap.Reflect("orgID", orgID), + ) + + err = m.next.Move(ctx, spaceID, orgID) + + m.logger.Debug("Move.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) Transfer(ctx context.Context, spaceID string, transferToOrg string) (err error) { + begin := time.Now() + + m.logger.Debug("Transfer.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceID", spaceID), + zap.Reflect("transferToOrg", transferToOrg), + ) + + err = m.next.Transfer(ctx, spaceID, transferToOrg) + + m.logger.Debug("Transfer.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) Update(ctx context.Context, space *spaces.Space) (err error) { + begin := time.Now() + + m.logger.Debug("Update.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("space", space), + ) + + err = m.next.Update(ctx, space) + + m.logger.Debug("Update.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) UpdateConfig(ctx context.Context, spaceId string, config *spaces.Config) (err error) { + begin := time.Now() + + m.logger.Debug("UpdateConfig.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("spaceId", spaceId), + zap.Reflect("config", config), + ) + + err = m.next.UpdateConfig(ctx, spaceId, config) + + m.logger.Debug("UpdateConfig.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} diff --git a/pkg/spaces/middleware/error_logging_middleware.go b/pkg/spaces/middleware/error_logging_middleware.go index b82cc16f7b7652dcec33bb262346d727c719d390..2b11838b51f1a033e9963a729c6378401e193d0c 100644 --- a/pkg/spaces/middleware/error_logging_middleware.go +++ b/pkg/spaces/middleware/error_logging_middleware.go @@ -1,9 +1,9 @@ -package middleware - // Code generated by gowrap. DO NOT EDIT. // template: ../../../assets/templates/middleware/error_log // gowrap: http://github.com/hexdigest/gowrap +package middleware + //go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/spaces -i Spaces -t ../../../assets/templates/middleware/error_log -o error_logging_middleware.go -l "" import ( diff --git a/pkg/spaces/middleware/logging_middleware.go b/pkg/spaces/middleware/logging_middleware.go deleted file mode 100644 index 499ed2d23d12737be2af49ec02835956d4b6eb83..0000000000000000000000000000000000000000 --- a/pkg/spaces/middleware/logging_middleware.go +++ /dev/null @@ -1,401 +0,0 @@ -package middleware - -// Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/access_log -// gowrap: http://github.com/hexdigest/gowrap - -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/spaces -i Spaces -t ../../../assets/templates/middleware/access_log -o logging_middleware.go -l "" - -import ( - "context" - "fmt" - "time" - - "git.perx.ru/perxis/perxis-go/pkg/auth" - "git.perx.ru/perxis/perxis-go/pkg/spaces" - "go.uber.org/zap" - "go.uber.org/zap/zapcore" -) - -// loggingMiddleware implements spaces.Spaces that is instrumented with logging -type loggingMiddleware struct { - logger *zap.Logger - next spaces.Spaces -} - -// LoggingMiddleware instruments an implementation of the spaces.Spaces with simple logging -func LoggingMiddleware(logger *zap.Logger) Middleware { - return func(next spaces.Spaces) spaces.Spaces { - return &loggingMiddleware{ - next: next, - logger: logger, - } - } -} - -func (m *loggingMiddleware) AbortTransfer(ctx context.Context, spaceID string) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceID": spaceID} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("AbortTransfer.Request", fields...) - - err = m.next.AbortTransfer(ctx, spaceID) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("AbortTransfer.Response", fields...) - - return err -} - -func (m *loggingMiddleware) Create(ctx context.Context, space *spaces.Space) (created *spaces.Space, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "space": space} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Create.Request", fields...) - - created, err = m.next.Create(ctx, space) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "created": created, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Create.Response", fields...) - - return created, err -} - -func (m *loggingMiddleware) Delete(ctx context.Context, spaceId string) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Delete.Request", fields...) - - err = m.next.Delete(ctx, spaceId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Delete.Response", fields...) - - return err -} - -func (m *loggingMiddleware) Get(ctx context.Context, spaceId string) (space *spaces.Space, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Get.Request", fields...) - - space, err = m.next.Get(ctx, spaceId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "space": space, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Get.Response", fields...) - - return space, err -} - -func (m *loggingMiddleware) List(ctx context.Context, orgId string) (spaces []*spaces.Space, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "orgId": orgId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("List.Request", fields...) - - spaces, err = m.next.List(ctx, orgId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "spaces": spaces, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("List.Response", fields...) - - return spaces, err -} - -func (m *loggingMiddleware) ListTransfers(ctx context.Context, orgID string) (spaces []*spaces.Space, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "orgID": orgID} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("ListTransfers.Request", fields...) - - spaces, err = m.next.ListTransfers(ctx, orgID) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "spaces": spaces, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("ListTransfers.Response", fields...) - - return spaces, err -} - -func (m *loggingMiddleware) Move(ctx context.Context, spaceID string, orgID string) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceID": spaceID, - "orgID": orgID} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Move.Request", fields...) - - err = m.next.Move(ctx, spaceID, orgID) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Move.Response", fields...) - - return err -} - -func (m *loggingMiddleware) Transfer(ctx context.Context, spaceID string, transferToOrg string) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceID": spaceID, - "transferToOrg": transferToOrg} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Transfer.Request", fields...) - - err = m.next.Transfer(ctx, spaceID, transferToOrg) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Transfer.Response", fields...) - - return err -} - -func (m *loggingMiddleware) Update(ctx context.Context, space *spaces.Space) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "space": space} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Update.Request", fields...) - - err = m.next.Update(ctx, space) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Update.Response", fields...) - - return err -} - -func (m *loggingMiddleware) UpdateConfig(ctx context.Context, spaceId string, config *spaces.Config) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "spaceId": spaceId, - "config": config} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("UpdateConfig.Request", fields...) - - err = m.next.UpdateConfig(ctx, spaceId, config) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("UpdateConfig.Response", fields...) - - return err -} diff --git a/pkg/spaces/middleware/middleware.go b/pkg/spaces/middleware/middleware.go index 7379b4ae182293f7750504663e59005551e3a63d..73c3b8c3538e6bf9a6457617afc35f68f429aaf3 100644 --- a/pkg/spaces/middleware/middleware.go +++ b/pkg/spaces/middleware/middleware.go @@ -1,10 +1,10 @@ // Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/middleware +// template: ../../../assets/templates/middleware/middleware.tmpl // gowrap: http://github.com/hexdigest/gowrap package middleware -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/spaces -i Spaces -t ../../../assets/templates/middleware/middleware -o middleware.go -l "" +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/spaces -i Spaces -t ../../../assets/templates/middleware/middleware.tmpl -o middleware.go -l "" import ( "git.perx.ru/perxis/perxis-go/pkg/spaces" @@ -17,12 +17,12 @@ func WithLog(s spaces.Spaces, logger *zap.Logger, log_access bool) spaces.Spaces if logger == nil { logger = zap.NewNop() } - logger = logger.Named("Spaces") - s = ErrorLoggingMiddleware(logger)(s) if log_access { - s = LoggingMiddleware(logger)(s) + s = AccessLoggingMiddleware(logger)(s) } + s = ErrorLoggingMiddleware(logger)(s) + s = RecoveringMiddleware(logger)(s) return s } diff --git a/pkg/spaces/middleware/recovering_middleware.go b/pkg/spaces/middleware/recovering_middleware.go index ad13a929c8c1ebd9a6132043a00617352af7e6d8..7b9b64ed276aa9a91dd9e07ee1b463ff8bb06003 100644 --- a/pkg/spaces/middleware/recovering_middleware.go +++ b/pkg/spaces/middleware/recovering_middleware.go @@ -1,9 +1,9 @@ -package middleware - // Code generated by gowrap. DO NOT EDIT. // template: ../../../assets/templates/middleware/recovery // gowrap: http://github.com/hexdigest/gowrap +package middleware + //go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/spaces -i Spaces -t ../../../assets/templates/middleware/recovery -o recovering_middleware.go -l "" import ( diff --git a/pkg/users/middleware/access_logging_middleware.go b/pkg/users/middleware/access_logging_middleware.go new file mode 100644 index 0000000000000000000000000000000000000000..dd8d4a14c73915d553381b239770fcf05c02aca5 --- /dev/null +++ b/pkg/users/middleware/access_logging_middleware.go @@ -0,0 +1,147 @@ +// Code generated by gowrap. DO NOT EDIT. +// template: ../../../assets/templates/middleware/access_log.tmpl +// gowrap: http://github.com/hexdigest/gowrap + +package middleware + +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/users -i Users -t ../../../assets/templates/middleware/access_log.tmpl -o access_logging_middleware.go -l "" + +import ( + "context" + "time" + + "git.perx.ru/perxis/perxis-go/pkg/auth" + "git.perx.ru/perxis/perxis-go/pkg/options" + "git.perx.ru/perxis/perxis-go/pkg/users" + "go.uber.org/zap" +) + +// accessLoggingMiddleware implements users.Users that is instrumented with logging +type accessLoggingMiddleware struct { + logger *zap.Logger + next users.Users +} + +// AccessLoggingMiddleware instruments an implementation of the users.Users with simple logging +func AccessLoggingMiddleware(logger *zap.Logger) Middleware { + return func(next users.Users) users.Users { + return &accessLoggingMiddleware{ + next: next, + logger: logger, + } + } +} + +func (m *accessLoggingMiddleware) Create(ctx context.Context, create *users.User) (user *users.User, err error) { + begin := time.Now() + + m.logger.Debug("Create.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("create", create), + ) + + user, err = m.next.Create(ctx, create) + + m.logger.Debug("Create.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("user", user), + zap.Error(err), + ) + + return user, err +} + +func (m *accessLoggingMiddleware) Delete(ctx context.Context, userId string) (err error) { + begin := time.Now() + + m.logger.Debug("Delete.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("userId", userId), + ) + + err = m.next.Delete(ctx, userId) + + m.logger.Debug("Delete.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} + +func (m *accessLoggingMiddleware) Find(ctx context.Context, filter *users.Filter, options *options.FindOptions) (users []*users.User, total int, err error) { + begin := time.Now() + + m.logger.Debug("Find.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("filter", filter), + zap.Reflect("options", options), + ) + + users, total, err = m.next.Find(ctx, filter, options) + + m.logger.Debug("Find.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("users", users), + zap.Reflect("total", total), + zap.Error(err), + ) + + return users, total, err +} + +func (m *accessLoggingMiddleware) Get(ctx context.Context, userId string) (user *users.User, err error) { + begin := time.Now() + + m.logger.Debug("Get.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("userId", userId), + ) + + user, err = m.next.Get(ctx, userId) + + m.logger.Debug("Get.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("user", user), + zap.Error(err), + ) + + return user, err +} + +func (m *accessLoggingMiddleware) GetByIdentity(ctx context.Context, identity string) (user *users.User, err error) { + begin := time.Now() + + m.logger.Debug("GetByIdentity.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("identity", identity), + ) + + user, err = m.next.GetByIdentity(ctx, identity) + + m.logger.Debug("GetByIdentity.Response", + zap.Duration("time", time.Since(begin)), + zap.Reflect("user", user), + zap.Error(err), + ) + + return user, err +} + +func (m *accessLoggingMiddleware) Update(ctx context.Context, update *users.User) (err error) { + begin := time.Now() + + m.logger.Debug("Update.Request", + zap.Reflect("principal", auth.GetPrincipal(ctx)), + zap.Reflect("update", update), + ) + + err = m.next.Update(ctx, update) + + m.logger.Debug("Update.Response", + zap.Duration("time", time.Since(begin)), + zap.Error(err), + ) + + return err +} diff --git a/pkg/users/middleware/error_logging_middleware.go b/pkg/users/middleware/error_logging_middleware.go index 688083dac93de779db6cdabd02002836901a0883..c499b9f3bf60726a10d30ced82e24bced6702236 100644 --- a/pkg/users/middleware/error_logging_middleware.go +++ b/pkg/users/middleware/error_logging_middleware.go @@ -1,9 +1,9 @@ -package middleware - // Code generated by gowrap. DO NOT EDIT. // template: ../../../assets/templates/middleware/error_log // gowrap: http://github.com/hexdigest/gowrap +package middleware + //go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/users -i Users -t ../../../assets/templates/middleware/error_log -o error_logging_middleware.go -l "" import ( diff --git a/pkg/users/middleware/logging_middleware.go b/pkg/users/middleware/logging_middleware.go deleted file mode 100644 index 0b9438ed939131c97679c5a3364a1e715be63b75..0000000000000000000000000000000000000000 --- a/pkg/users/middleware/logging_middleware.go +++ /dev/null @@ -1,257 +0,0 @@ -package middleware - -// Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/access_log -// gowrap: http://github.com/hexdigest/gowrap - -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/users -i Users -t ../../../assets/templates/middleware/access_log -o logging_middleware.go -l "" - -import ( - "context" - "fmt" - "time" - - "git.perx.ru/perxis/perxis-go/pkg/auth" - "git.perx.ru/perxis/perxis-go/pkg/options" - "git.perx.ru/perxis/perxis-go/pkg/users" - "go.uber.org/zap" - "go.uber.org/zap/zapcore" -) - -// loggingMiddleware implements users.Users that is instrumented with logging -type loggingMiddleware struct { - logger *zap.Logger - next users.Users -} - -// LoggingMiddleware instruments an implementation of the users.Users with simple logging -func LoggingMiddleware(logger *zap.Logger) Middleware { - return func(next users.Users) users.Users { - return &loggingMiddleware{ - next: next, - logger: logger, - } - } -} - -func (m *loggingMiddleware) Create(ctx context.Context, create *users.User) (user *users.User, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "create": create} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Create.Request", fields...) - - user, err = m.next.Create(ctx, create) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "user": user, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Create.Response", fields...) - - return user, err -} - -func (m *loggingMiddleware) Delete(ctx context.Context, userId string) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "userId": userId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Delete.Request", fields...) - - err = m.next.Delete(ctx, userId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Delete.Response", fields...) - - return err -} - -func (m *loggingMiddleware) Find(ctx context.Context, filter *users.Filter, options *options.FindOptions) (users []*users.User, total int, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "filter": filter, - "options": options} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Find.Request", fields...) - - users, total, err = m.next.Find(ctx, filter, options) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "users": users, - "total": total, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Find.Response", fields...) - - return users, total, err -} - -func (m *loggingMiddleware) Get(ctx context.Context, userId string) (user *users.User, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "userId": userId} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Get.Request", fields...) - - user, err = m.next.Get(ctx, userId) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "user": user, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Get.Response", fields...) - - return user, err -} - -func (m *loggingMiddleware) GetByIdentity(ctx context.Context, identity string) (user *users.User, err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "identity": identity} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("GetByIdentity.Request", fields...) - - user, err = m.next.GetByIdentity(ctx, identity) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "user": user, - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("GetByIdentity.Response", fields...) - - return user, err -} - -func (m *loggingMiddleware) Update(ctx context.Context, update *users.User) (err error) { - begin := time.Now() - var fields []zapcore.Field - for k, v := range map[string]interface{}{ - "ctx": ctx, - "update": update} { - if k == "ctx" { - fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx)))) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Update.Request", fields...) - - err = m.next.Update(ctx, update) - - fields = []zapcore.Field{ - zap.Duration("time", time.Since(begin)), - } - - for k, v := range map[string]interface{}{ - "err": err} { - if k == "err" { - err, _ := v.(error) - fields = append(fields, zap.Error(err)) - continue - } - fields = append(fields, zap.Reflect(k, v)) - } - - m.logger.Debug("Update.Response", fields...) - - return err -} diff --git a/pkg/users/middleware/middleware.go b/pkg/users/middleware/middleware.go index 63bc862271dc6d7002ea2db479aa359885ad5ebd..d94190827de3028c96000df15bf06c719e30cf92 100644 --- a/pkg/users/middleware/middleware.go +++ b/pkg/users/middleware/middleware.go @@ -1,10 +1,10 @@ // Code generated by gowrap. DO NOT EDIT. -// template: ../../../assets/templates/middleware/middleware +// template: ../../../assets/templates/middleware/middleware.tmpl // gowrap: http://github.com/hexdigest/gowrap package middleware -//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/users -i Users -t ../../../assets/templates/middleware/middleware -o middleware.go -l "" +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/users -i Users -t ../../../assets/templates/middleware/middleware.tmpl -o middleware.go -l "" import ( "git.perx.ru/perxis/perxis-go/pkg/users" @@ -17,12 +17,12 @@ func WithLog(s users.Users, logger *zap.Logger, log_access bool) users.Users { if logger == nil { logger = zap.NewNop() } - logger = logger.Named("Users") - s = ErrorLoggingMiddleware(logger)(s) if log_access { - s = LoggingMiddleware(logger)(s) + s = AccessLoggingMiddleware(logger)(s) } + s = ErrorLoggingMiddleware(logger)(s) + s = RecoveringMiddleware(logger)(s) return s } diff --git a/proto/log/log.pb.go b/proto/logs/log.pb.go similarity index 63% rename from proto/log/log.pb.go rename to proto/logs/log.pb.go index e25f01596081236521333ed1f2167a967ebea583..8beabf96d64b409bc99ebf0b6e6ecb64b1ae4aa6 100644 --- a/proto/log/log.pb.go +++ b/proto/logs/log.pb.go @@ -2,9 +2,9 @@ // versions: // protoc-gen-go v1.31.0 // protoc v4.25.1 -// source: log/log.proto +// source: logs/log.proto -package log +package logs import ( _ "git.perx.ru/perxis/perxis-go/proto/common" @@ -68,11 +68,11 @@ func (x LogLevel) String() string { } func (LogLevel) Descriptor() protoreflect.EnumDescriptor { - return file_log_log_proto_enumTypes[0].Descriptor() + return file_logs_log_proto_enumTypes[0].Descriptor() } func (LogLevel) Type() protoreflect.EnumType { - return &file_log_log_proto_enumTypes[0] + return &file_logs_log_proto_enumTypes[0] } func (x LogLevel) Number() protoreflect.EnumNumber { @@ -81,7 +81,7 @@ func (x LogLevel) Number() protoreflect.EnumNumber { // Deprecated: Use LogLevel.Descriptor instead. func (LogLevel) EnumDescriptor() ([]byte, []int) { - return file_log_log_proto_rawDescGZIP(), []int{0} + return file_logs_log_proto_rawDescGZIP(), []int{0} } // LogEntry представляет собой структуру данных для хранения информации о журнале. @@ -94,7 +94,7 @@ type LogEntry struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // timestamp указывает на временную метку, указывающую когда было создано данное сообщение. Timestamp *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - Level LogLevel `protobuf:"varint,3,opt,name=level,proto3,enum=log.LogLevel" json:"level,omitempty"` // message это основное сообщение, которое требуется записать в лог. + Level LogLevel `protobuf:"varint,3,opt,name=level,proto3,enum=logs.LogLevel" json:"level,omitempty"` // message это основное сообщение, которое требуется записать в лог. Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` // category указывает на категорию события. // Примеры: @@ -151,7 +151,7 @@ type LogEntry struct { func (x *LogEntry) Reset() { *x = LogEntry{} if protoimpl.UnsafeEnabled { - mi := &file_log_log_proto_msgTypes[0] + mi := &file_logs_log_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -164,7 +164,7 @@ func (x *LogEntry) String() string { func (*LogEntry) ProtoMessage() {} func (x *LogEntry) ProtoReflect() protoreflect.Message { - mi := &file_log_log_proto_msgTypes[0] + mi := &file_logs_log_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -177,7 +177,7 @@ func (x *LogEntry) ProtoReflect() protoreflect.Message { // Deprecated: Use LogEntry.ProtoReflect.Descriptor instead. func (*LogEntry) Descriptor() ([]byte, []int) { - return file_log_log_proto_rawDescGZIP(), []int{0} + return file_logs_log_proto_rawDescGZIP(), []int{0} } func (x *LogEntry) GetId() string { @@ -257,71 +257,72 @@ func (x *LogEntry) GetTags() []string { return nil } -var File_log_log_proto protoreflect.FileDescriptor - -var file_log_log_proto_rawDesc = []byte{ - 0x0a, 0x0d, 0x6c, 0x6f, 0x67, 0x2f, 0x6c, 0x6f, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x03, 0x6c, 0x6f, 0x67, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x12, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xdb, 0x02, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x23, 0x0a, 0x05, 0x6c, - 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x6c, 0x6f, 0x67, - 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, - 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, - 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, - 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, - 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, - 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x6c, 0x6c, - 0x65, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, - 0x67, 0x73, 0x2a, 0x45, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x08, - 0x0a, 0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x41, 0x52, 0x4e, - 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, - 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x03, 0x12, 0x09, - 0x0a, 0x05, 0x46, 0x41, 0x54, 0x41, 0x4c, 0x10, 0x04, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69, 0x74, - 0x2e, 0x70, 0x65, 0x72, 0x78, 0x2e, 0x72, 0x75, 0x2f, 0x70, 0x65, 0x72, 0x78, 0x69, 0x73, 0x2f, - 0x70, 0x65, 0x72, 0x78, 0x69, 0x73, 0x2d, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, - 0x6c, 0x6f, 0x67, 0x3b, 0x6c, 0x6f, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +var File_logs_log_proto protoreflect.FileDescriptor + +var file_logs_log_proto_rawDesc = []byte{ + 0x0a, 0x0e, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x6c, 0x6f, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x12, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xdc, 0x02, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x24, 0x0a, + 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x6c, + 0x6f, 0x67, 0x73, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x65, + 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, + 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, + 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, + 0x09, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x61, + 0x6c, 0x6c, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, + 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x61, 0x74, 0x74, + 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x61, 0x67, 0x73, 0x2a, 0x45, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x57, + 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, + 0x52, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, + 0x03, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x41, 0x54, 0x41, 0x4c, 0x10, 0x04, 0x42, 0x2e, 0x5a, 0x2c, + 0x67, 0x69, 0x74, 0x2e, 0x70, 0x65, 0x72, 0x78, 0x2e, 0x72, 0x75, 0x2f, 0x70, 0x65, 0x72, 0x78, + 0x69, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x78, 0x69, 0x73, 0x2d, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x3b, 0x6c, 0x6f, 0x67, 0x73, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( - file_log_log_proto_rawDescOnce sync.Once - file_log_log_proto_rawDescData = file_log_log_proto_rawDesc + file_logs_log_proto_rawDescOnce sync.Once + file_logs_log_proto_rawDescData = file_logs_log_proto_rawDesc ) -func file_log_log_proto_rawDescGZIP() []byte { - file_log_log_proto_rawDescOnce.Do(func() { - file_log_log_proto_rawDescData = protoimpl.X.CompressGZIP(file_log_log_proto_rawDescData) +func file_logs_log_proto_rawDescGZIP() []byte { + file_logs_log_proto_rawDescOnce.Do(func() { + file_logs_log_proto_rawDescData = protoimpl.X.CompressGZIP(file_logs_log_proto_rawDescData) }) - return file_log_log_proto_rawDescData + return file_logs_log_proto_rawDescData } -var file_log_log_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_log_log_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_log_log_proto_goTypes = []interface{}{ - (LogLevel)(0), // 0: log.LogLevel - (*LogEntry)(nil), // 1: log.LogEntry +var file_logs_log_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_logs_log_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_logs_log_proto_goTypes = []interface{}{ + (LogLevel)(0), // 0: logs.LogLevel + (*LogEntry)(nil), // 1: logs.LogEntry (*timestamppb.Timestamp)(nil), // 2: google.protobuf.Timestamp (*anypb.Any)(nil), // 3: google.protobuf.Any } -var file_log_log_proto_depIdxs = []int32{ - 2, // 0: log.LogEntry.timestamp:type_name -> google.protobuf.Timestamp - 0, // 1: log.LogEntry.level:type_name -> log.LogLevel - 3, // 2: log.LogEntry.attr:type_name -> google.protobuf.Any +var file_logs_log_proto_depIdxs = []int32{ + 2, // 0: logs.LogEntry.timestamp:type_name -> google.protobuf.Timestamp + 0, // 1: logs.LogEntry.level:type_name -> logs.LogLevel + 3, // 2: logs.LogEntry.attr:type_name -> google.protobuf.Any 3, // [3:3] is the sub-list for method output_type 3, // [3:3] is the sub-list for method input_type 3, // [3:3] is the sub-list for extension type_name @@ -329,13 +330,13 @@ var file_log_log_proto_depIdxs = []int32{ 0, // [0:3] is the sub-list for field type_name } -func init() { file_log_log_proto_init() } -func file_log_log_proto_init() { - if File_log_log_proto != nil { +func init() { file_logs_log_proto_init() } +func file_logs_log_proto_init() { + if File_logs_log_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_log_log_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_logs_log_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LogEntry); i { case 0: return &v.state @@ -352,19 +353,19 @@ func file_log_log_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_log_log_proto_rawDesc, + RawDescriptor: file_logs_log_proto_rawDesc, NumEnums: 1, NumMessages: 1, NumExtensions: 0, NumServices: 0, }, - GoTypes: file_log_log_proto_goTypes, - DependencyIndexes: file_log_log_proto_depIdxs, - EnumInfos: file_log_log_proto_enumTypes, - MessageInfos: file_log_log_proto_msgTypes, + GoTypes: file_logs_log_proto_goTypes, + DependencyIndexes: file_logs_log_proto_depIdxs, + EnumInfos: file_logs_log_proto_enumTypes, + MessageInfos: file_logs_log_proto_msgTypes, }.Build() - File_log_log_proto = out.File - file_log_log_proto_rawDesc = nil - file_log_log_proto_goTypes = nil - file_log_log_proto_depIdxs = nil + File_logs_log_proto = out.File + file_logs_log_proto_rawDesc = nil + file_logs_log_proto_goTypes = nil + file_logs_log_proto_depIdxs = nil } diff --git a/proto/log/log_service.pb.go b/proto/logs/log_service.pb.go similarity index 57% rename from proto/log/log_service.pb.go rename to proto/logs/log_service.pb.go index 02d2c1074d9bdb111da86dc8a02fabc22eb850c4..7036778591e3e51156c67eccffb05976fea10d38 100644 --- a/proto/log/log_service.pb.go +++ b/proto/logs/log_service.pb.go @@ -2,9 +2,9 @@ // versions: // protoc-gen-go v1.31.0 // protoc v4.25.1 -// source: log/log_service.proto +// source: logs/log_service.proto -package log +package logs import ( common "git.perx.ru/perxis/perxis-go/proto/common" @@ -35,7 +35,7 @@ type LogRequest struct { func (x *LogRequest) Reset() { *x = LogRequest{} if protoimpl.UnsafeEnabled { - mi := &file_log_log_service_proto_msgTypes[0] + mi := &file_logs_log_service_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -48,7 +48,7 @@ func (x *LogRequest) String() string { func (*LogRequest) ProtoMessage() {} func (x *LogRequest) ProtoReflect() protoreflect.Message { - mi := &file_log_log_service_proto_msgTypes[0] + mi := &file_logs_log_service_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -61,7 +61,7 @@ func (x *LogRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LogRequest.ProtoReflect.Descriptor instead. func (*LogRequest) Descriptor() ([]byte, []int) { - return file_log_log_service_proto_rawDescGZIP(), []int{0} + return file_logs_log_service_proto_rawDescGZIP(), []int{0} } func (x *LogRequest) GetEntries() []*LogEntry { @@ -84,7 +84,7 @@ type LogResponse struct { func (x *LogResponse) Reset() { *x = LogResponse{} if protoimpl.UnsafeEnabled { - mi := &file_log_log_service_proto_msgTypes[1] + mi := &file_logs_log_service_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -97,7 +97,7 @@ func (x *LogResponse) String() string { func (*LogResponse) ProtoMessage() {} func (x *LogResponse) ProtoReflect() protoreflect.Message { - mi := &file_log_log_service_proto_msgTypes[1] + mi := &file_logs_log_service_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -110,7 +110,7 @@ func (x *LogResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use LogResponse.ProtoReflect.Descriptor instead. func (*LogResponse) Descriptor() ([]byte, []int) { - return file_log_log_service_proto_rawDescGZIP(), []int{1} + return file_logs_log_service_proto_rawDescGZIP(), []int{1} } func (x *LogResponse) GetError() *common.Error { @@ -137,7 +137,7 @@ type Filter struct { func (x *Filter) Reset() { *x = Filter{} if protoimpl.UnsafeEnabled { - mi := &file_log_log_service_proto_msgTypes[2] + mi := &file_logs_log_service_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -150,7 +150,7 @@ func (x *Filter) String() string { func (*Filter) ProtoMessage() {} func (x *Filter) ProtoReflect() protoreflect.Message { - mi := &file_log_log_service_proto_msgTypes[2] + mi := &file_logs_log_service_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -163,7 +163,7 @@ func (x *Filter) ProtoReflect() protoreflect.Message { // Deprecated: Use Filter.ProtoReflect.Descriptor instead. func (*Filter) Descriptor() ([]byte, []int) { - return file_log_log_service_proto_rawDescGZIP(), []int{2} + return file_logs_log_service_proto_rawDescGZIP(), []int{2} } func (x *Filter) GetQ() []string { @@ -188,7 +188,7 @@ type FindRequest struct { func (x *FindRequest) Reset() { *x = FindRequest{} if protoimpl.UnsafeEnabled { - mi := &file_log_log_service_proto_msgTypes[3] + mi := &file_logs_log_service_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -201,7 +201,7 @@ func (x *FindRequest) String() string { func (*FindRequest) ProtoMessage() {} func (x *FindRequest) ProtoReflect() protoreflect.Message { - mi := &file_log_log_service_proto_msgTypes[3] + mi := &file_logs_log_service_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -214,7 +214,7 @@ func (x *FindRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FindRequest.ProtoReflect.Descriptor instead. func (*FindRequest) Descriptor() ([]byte, []int) { - return file_log_log_service_proto_rawDescGZIP(), []int{3} + return file_logs_log_service_proto_rawDescGZIP(), []int{3} } func (x *FindRequest) GetFilter() *Filter { @@ -251,7 +251,7 @@ type FindResult struct { func (x *FindResult) Reset() { *x = FindResult{} if protoimpl.UnsafeEnabled { - mi := &file_log_log_service_proto_msgTypes[4] + mi := &file_logs_log_service_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -264,7 +264,7 @@ func (x *FindResult) String() string { func (*FindResult) ProtoMessage() {} func (x *FindResult) ProtoReflect() protoreflect.Message { - mi := &file_log_log_service_proto_msgTypes[4] + mi := &file_logs_log_service_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -277,7 +277,7 @@ func (x *FindResult) ProtoReflect() protoreflect.Message { // Deprecated: Use FindResult.ProtoReflect.Descriptor instead. func (*FindResult) Descriptor() ([]byte, []int) { - return file_log_log_service_proto_rawDescGZIP(), []int{4} + return file_logs_log_service_proto_rawDescGZIP(), []int{4} } func (x *FindResult) GetEntries() []*LogEntry { @@ -324,7 +324,7 @@ type FindResponse struct { func (x *FindResponse) Reset() { *x = FindResponse{} if protoimpl.UnsafeEnabled { - mi := &file_log_log_service_proto_msgTypes[5] + mi := &file_logs_log_service_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -337,7 +337,7 @@ func (x *FindResponse) String() string { func (*FindResponse) ProtoMessage() {} func (x *FindResponse) ProtoReflect() protoreflect.Message { - mi := &file_log_log_service_proto_msgTypes[5] + mi := &file_logs_log_service_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -350,7 +350,7 @@ func (x *FindResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use FindResponse.ProtoReflect.Descriptor instead. func (*FindResponse) Descriptor() ([]byte, []int) { - return file_log_log_service_proto_rawDescGZIP(), []int{5} + return file_logs_log_service_proto_rawDescGZIP(), []int{5} } func (m *FindResponse) GetResponse() isFindResponse_Response { @@ -405,7 +405,7 @@ type DeleteRequest struct { func (x *DeleteRequest) Reset() { *x = DeleteRequest{} if protoimpl.UnsafeEnabled { - mi := &file_log_log_service_proto_msgTypes[6] + mi := &file_logs_log_service_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -418,7 +418,7 @@ func (x *DeleteRequest) String() string { func (*DeleteRequest) ProtoMessage() {} func (x *DeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_log_log_service_proto_msgTypes[6] + mi := &file_logs_log_service_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -431,7 +431,7 @@ func (x *DeleteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteRequest.ProtoReflect.Descriptor instead. func (*DeleteRequest) Descriptor() ([]byte, []int) { - return file_log_log_service_proto_rawDescGZIP(), []int{6} + return file_logs_log_service_proto_rawDescGZIP(), []int{6} } func (x *DeleteRequest) GetFilter() *Filter { @@ -454,7 +454,7 @@ type DeleteResponse struct { func (x *DeleteResponse) Reset() { *x = DeleteResponse{} if protoimpl.UnsafeEnabled { - mi := &file_log_log_service_proto_msgTypes[7] + mi := &file_logs_log_service_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -467,7 +467,7 @@ func (x *DeleteResponse) String() string { func (*DeleteResponse) ProtoMessage() {} func (x *DeleteResponse) ProtoReflect() protoreflect.Message { - mi := &file_log_log_service_proto_msgTypes[7] + mi := &file_logs_log_service_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -480,7 +480,7 @@ func (x *DeleteResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteResponse.ProtoReflect.Descriptor instead. func (*DeleteResponse) Descriptor() ([]byte, []int) { - return file_log_log_service_proto_rawDescGZIP(), []int{7} + return file_logs_log_service_proto_rawDescGZIP(), []int{7} } func (x *DeleteResponse) GetError() *common.Error { @@ -490,114 +490,115 @@ func (x *DeleteResponse) GetError() *common.Error { return nil } -var File_log_log_service_proto protoreflect.FileDescriptor - -var file_log_log_service_proto_rawDesc = []byte{ - 0x0a, 0x15, 0x6c, 0x6f, 0x67, 0x2f, 0x6c, 0x6f, 0x67, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x6c, 0x6f, 0x67, 0x1a, 0x13, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x12, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0d, 0x6c, 0x6f, 0x67, 0x2f, 0x6c, 0x6f, 0x67, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x35, 0x0a, 0x0a, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x4c, 0x6f, 0x67, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x32, 0x0a, 0x0b, - 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x22, 0x16, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x0c, 0x0a, 0x01, 0x71, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x01, 0x71, 0x22, 0x61, 0x0a, 0x0b, 0x46, 0x69, 0x6e, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x07, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x9f, 0x01, 0x0a, 0x0a, - 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x27, 0x0a, 0x07, 0x65, 0x6e, - 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6c, 0x6f, - 0x67, 0x2e, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x6c, 0x0a, - 0x0c, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, - 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, - 0x6c, 0x6f, 0x67, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, - 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x25, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, - 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x0a, 0x0d, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x6c, - 0x6f, 0x67, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x22, 0x35, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x32, 0x9c, 0x01, 0x0a, 0x0a, 0x4c, 0x6f, 0x67, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x4c, 0x6f, 0x67, 0x12, 0x0f, - 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x10, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x2d, 0x0a, 0x04, 0x46, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x2e, 0x6c, 0x6f, - 0x67, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, - 0x6c, 0x6f, 0x67, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x33, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x12, 0x2e, 0x6c, - 0x6f, 0x67, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x13, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x2e, 0x70, +var File_logs_log_service_proto protoreflect.FileDescriptor + +var file_logs_log_service_proto_rawDesc = []byte{ + 0x0a, 0x16, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x6c, 0x6f, 0x67, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x1a, 0x13, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0e, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x6c, 0x6f, + 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x36, 0x0a, 0x0a, 0x4c, 0x6f, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x2e, 0x4c, + 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x22, 0x32, 0x0a, 0x0b, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x23, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x22, 0x16, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x0c, + 0x0a, 0x01, 0x71, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x01, 0x71, 0x22, 0x62, 0x0a, 0x0b, + 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x06, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6c, 0x6f, + 0x67, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x12, 0x2d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x22, 0xa1, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x28, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x2e, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x06, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6c, 0x6f, 0x67, 0x73, + 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, + 0x2d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x6d, 0x0a, 0x0c, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x2e, 0x46, 0x69, 0x6e, 0x64, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x25, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, + 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x35, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x35, 0x0a, 0x0e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x05, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x32, 0xa3, 0x01, 0x0a, 0x0b, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x2c, 0x0a, 0x03, 0x4c, 0x6f, 0x67, 0x12, 0x10, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x2e, + 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x6c, 0x6f, 0x67, + 0x73, 0x2e, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x2f, 0x0a, 0x04, 0x46, 0x69, 0x6e, 0x64, 0x12, 0x11, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x2e, 0x46, + 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x6c, 0x6f, 0x67, + 0x73, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x35, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x13, 0x2e, 0x6c, 0x6f, 0x67, + 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x14, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x2e, 0x70, 0x65, 0x72, 0x78, 0x2e, 0x72, 0x75, 0x2f, 0x70, 0x65, 0x72, 0x78, 0x69, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x78, 0x69, 0x73, 0x2d, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6c, 0x6f, - 0x67, 0x3b, 0x6c, 0x6f, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x67, 0x73, 0x3b, 0x6c, 0x6f, 0x67, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( - file_log_log_service_proto_rawDescOnce sync.Once - file_log_log_service_proto_rawDescData = file_log_log_service_proto_rawDesc + file_logs_log_service_proto_rawDescOnce sync.Once + file_logs_log_service_proto_rawDescData = file_logs_log_service_proto_rawDesc ) -func file_log_log_service_proto_rawDescGZIP() []byte { - file_log_log_service_proto_rawDescOnce.Do(func() { - file_log_log_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_log_log_service_proto_rawDescData) +func file_logs_log_service_proto_rawDescGZIP() []byte { + file_logs_log_service_proto_rawDescOnce.Do(func() { + file_logs_log_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_logs_log_service_proto_rawDescData) }) - return file_log_log_service_proto_rawDescData -} - -var file_log_log_service_proto_msgTypes = make([]protoimpl.MessageInfo, 8) -var file_log_log_service_proto_goTypes = []interface{}{ - (*LogRequest)(nil), // 0: log.LogRequest - (*LogResponse)(nil), // 1: log.LogResponse - (*Filter)(nil), // 2: log.Filter - (*FindRequest)(nil), // 3: log.FindRequest - (*FindResult)(nil), // 4: log.FindResult - (*FindResponse)(nil), // 5: log.FindResponse - (*DeleteRequest)(nil), // 6: log.DeleteRequest - (*DeleteResponse)(nil), // 7: log.DeleteResponse - (*LogEntry)(nil), // 8: log.LogEntry + return file_logs_log_service_proto_rawDescData +} + +var file_logs_log_service_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_logs_log_service_proto_goTypes = []interface{}{ + (*LogRequest)(nil), // 0: logs.LogRequest + (*LogResponse)(nil), // 1: logs.LogResponse + (*Filter)(nil), // 2: logs.Filter + (*FindRequest)(nil), // 3: logs.FindRequest + (*FindResult)(nil), // 4: logs.FindResult + (*FindResponse)(nil), // 5: logs.FindResponse + (*DeleteRequest)(nil), // 6: logs.DeleteRequest + (*DeleteResponse)(nil), // 7: logs.DeleteResponse + (*LogEntry)(nil), // 8: logs.LogEntry (*common.Error)(nil), // 9: common.Error (*common.FindOptions)(nil), // 10: common.FindOptions } -var file_log_log_service_proto_depIdxs = []int32{ - 8, // 0: log.LogRequest.entries:type_name -> log.LogEntry - 9, // 1: log.LogResponse.error:type_name -> common.Error - 2, // 2: log.FindRequest.filter:type_name -> log.Filter - 10, // 3: log.FindRequest.options:type_name -> common.FindOptions - 8, // 4: log.FindResult.entries:type_name -> log.LogEntry - 2, // 5: log.FindResult.filter:type_name -> log.Filter - 10, // 6: log.FindResult.options:type_name -> common.FindOptions - 4, // 7: log.FindResponse.result:type_name -> log.FindResult - 9, // 8: log.FindResponse.error:type_name -> common.Error - 2, // 9: log.DeleteRequest.filter:type_name -> log.Filter - 9, // 10: log.DeleteResponse.error:type_name -> common.Error - 0, // 11: log.LogService.Log:input_type -> log.LogRequest - 3, // 12: log.LogService.Find:input_type -> log.FindRequest - 6, // 13: log.LogService.Delete:input_type -> log.DeleteRequest - 1, // 14: log.LogService.Log:output_type -> log.LogResponse - 5, // 15: log.LogService.Find:output_type -> log.FindResponse - 7, // 16: log.LogService.Delete:output_type -> log.DeleteResponse +var file_logs_log_service_proto_depIdxs = []int32{ + 8, // 0: logs.LogRequest.entries:type_name -> logs.LogEntry + 9, // 1: logs.LogResponse.error:type_name -> common.Error + 2, // 2: logs.FindRequest.filter:type_name -> logs.Filter + 10, // 3: logs.FindRequest.options:type_name -> common.FindOptions + 8, // 4: logs.FindResult.entries:type_name -> logs.LogEntry + 2, // 5: logs.FindResult.filter:type_name -> logs.Filter + 10, // 6: logs.FindResult.options:type_name -> common.FindOptions + 4, // 7: logs.FindResponse.result:type_name -> logs.FindResult + 9, // 8: logs.FindResponse.error:type_name -> common.Error + 2, // 9: logs.DeleteRequest.filter:type_name -> logs.Filter + 9, // 10: logs.DeleteResponse.error:type_name -> common.Error + 0, // 11: logs.LogsService.Log:input_type -> logs.LogRequest + 3, // 12: logs.LogsService.Find:input_type -> logs.FindRequest + 6, // 13: logs.LogsService.Delete:input_type -> logs.DeleteRequest + 1, // 14: logs.LogsService.Log:output_type -> logs.LogResponse + 5, // 15: logs.LogsService.Find:output_type -> logs.FindResponse + 7, // 16: logs.LogsService.Delete:output_type -> logs.DeleteResponse 14, // [14:17] is the sub-list for method output_type 11, // [11:14] is the sub-list for method input_type 11, // [11:11] is the sub-list for extension type_name @@ -605,14 +606,14 @@ var file_log_log_service_proto_depIdxs = []int32{ 0, // [0:11] is the sub-list for field type_name } -func init() { file_log_log_service_proto_init() } -func file_log_log_service_proto_init() { - if File_log_log_service_proto != nil { +func init() { file_logs_log_service_proto_init() } +func file_logs_log_service_proto_init() { + if File_logs_log_service_proto != nil { return } - file_log_log_proto_init() + file_logs_log_proto_init() if !protoimpl.UnsafeEnabled { - file_log_log_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_logs_log_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LogRequest); i { case 0: return &v.state @@ -624,7 +625,7 @@ func file_log_log_service_proto_init() { return nil } } - file_log_log_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_logs_log_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LogResponse); i { case 0: return &v.state @@ -636,7 +637,7 @@ func file_log_log_service_proto_init() { return nil } } - file_log_log_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_logs_log_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Filter); i { case 0: return &v.state @@ -648,7 +649,7 @@ func file_log_log_service_proto_init() { return nil } } - file_log_log_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_logs_log_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindRequest); i { case 0: return &v.state @@ -660,7 +661,7 @@ func file_log_log_service_proto_init() { return nil } } - file_log_log_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_logs_log_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindResult); i { case 0: return &v.state @@ -672,7 +673,7 @@ func file_log_log_service_proto_init() { return nil } } - file_log_log_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_logs_log_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindResponse); i { case 0: return &v.state @@ -684,7 +685,7 @@ func file_log_log_service_proto_init() { return nil } } - file_log_log_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_logs_log_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteRequest); i { case 0: return &v.state @@ -696,7 +697,7 @@ func file_log_log_service_proto_init() { return nil } } - file_log_log_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_logs_log_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteResponse); i { case 0: return &v.state @@ -709,7 +710,7 @@ func file_log_log_service_proto_init() { } } } - file_log_log_service_proto_msgTypes[5].OneofWrappers = []interface{}{ + file_logs_log_service_proto_msgTypes[5].OneofWrappers = []interface{}{ (*FindResponse_Result)(nil), (*FindResponse_Error)(nil), } @@ -717,18 +718,18 @@ func file_log_log_service_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_log_log_service_proto_rawDesc, + RawDescriptor: file_logs_log_service_proto_rawDesc, NumEnums: 0, NumMessages: 8, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_log_log_service_proto_goTypes, - DependencyIndexes: file_log_log_service_proto_depIdxs, - MessageInfos: file_log_log_service_proto_msgTypes, + GoTypes: file_logs_log_service_proto_goTypes, + DependencyIndexes: file_logs_log_service_proto_depIdxs, + MessageInfos: file_logs_log_service_proto_msgTypes, }.Build() - File_log_log_service_proto = out.File - file_log_log_service_proto_rawDesc = nil - file_log_log_service_proto_goTypes = nil - file_log_log_service_proto_depIdxs = nil + File_logs_log_service_proto = out.File + file_logs_log_service_proto_rawDesc = nil + file_logs_log_service_proto_goTypes = nil + file_logs_log_service_proto_depIdxs = nil } diff --git a/proto/log/log_service_grpc.pb.go b/proto/logs/log_service_grpc.pb.go similarity index 51% rename from proto/log/log_service_grpc.pb.go rename to proto/logs/log_service_grpc.pb.go index d9dfda0b67492f3e5521a4f368d24502c206b542..ad55cee20f51d0135ab737a566f405696fe693fa 100644 --- a/proto/log/log_service_grpc.pb.go +++ b/proto/logs/log_service_grpc.pb.go @@ -2,9 +2,9 @@ // versions: // - protoc-gen-go-grpc v1.3.0 // - protoc v4.25.1 -// source: log/log_service.proto +// source: logs/log_service.proto -package log +package logs import ( context "context" @@ -19,15 +19,15 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - LogService_Log_FullMethodName = "/log.LogService/Log" - LogService_Find_FullMethodName = "/log.LogService/Find" - LogService_Delete_FullMethodName = "/log.LogService/Delete" + LogsService_Log_FullMethodName = "/logs.LogsService/Log" + LogsService_Find_FullMethodName = "/logs.LogsService/Find" + LogsService_Delete_FullMethodName = "/logs.LogsService/Delete" ) -// LogServiceClient is the client API for LogService service. +// LogsServiceClient is the client API for LogsService service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type LogServiceClient interface { +type LogsServiceClient interface { // Метод для записи логов Log(ctx context.Context, in *LogRequest, opts ...grpc.CallOption) (*LogResponse, error) // Метод для поиска логов по заданным параметрам @@ -36,154 +36,154 @@ type LogServiceClient interface { Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*DeleteResponse, error) } -type logServiceClient struct { +type logsServiceClient struct { cc grpc.ClientConnInterface } -func NewLogServiceClient(cc grpc.ClientConnInterface) LogServiceClient { - return &logServiceClient{cc} +func NewLogsServiceClient(cc grpc.ClientConnInterface) LogsServiceClient { + return &logsServiceClient{cc} } -func (c *logServiceClient) Log(ctx context.Context, in *LogRequest, opts ...grpc.CallOption) (*LogResponse, error) { +func (c *logsServiceClient) Log(ctx context.Context, in *LogRequest, opts ...grpc.CallOption) (*LogResponse, error) { out := new(LogResponse) - err := c.cc.Invoke(ctx, LogService_Log_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, LogsService_Log_FullMethodName, in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *logServiceClient) Find(ctx context.Context, in *FindRequest, opts ...grpc.CallOption) (*FindResponse, error) { +func (c *logsServiceClient) Find(ctx context.Context, in *FindRequest, opts ...grpc.CallOption) (*FindResponse, error) { out := new(FindResponse) - err := c.cc.Invoke(ctx, LogService_Find_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, LogsService_Find_FullMethodName, in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *logServiceClient) Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*DeleteResponse, error) { +func (c *logsServiceClient) Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*DeleteResponse, error) { out := new(DeleteResponse) - err := c.cc.Invoke(ctx, LogService_Delete_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, LogsService_Delete_FullMethodName, in, out, opts...) if err != nil { return nil, err } return out, nil } -// LogServiceServer is the server API for LogService service. -// All implementations must embed UnimplementedLogServiceServer +// LogsServiceServer is the server API for LogsService service. +// All implementations must embed UnimplementedLogsServiceServer // for forward compatibility -type LogServiceServer interface { +type LogsServiceServer interface { // Метод для записи логов Log(context.Context, *LogRequest) (*LogResponse, error) // Метод для поиска логов по заданным параметрам Find(context.Context, *FindRequest) (*FindResponse, error) // Метод для удаления логов по заданным параметрам Delete(context.Context, *DeleteRequest) (*DeleteResponse, error) - mustEmbedUnimplementedLogServiceServer() + mustEmbedUnimplementedLogsServiceServer() } -// UnimplementedLogServiceServer must be embedded to have forward compatible implementations. -type UnimplementedLogServiceServer struct { +// UnimplementedLogsServiceServer must be embedded to have forward compatible implementations. +type UnimplementedLogsServiceServer struct { } -func (UnimplementedLogServiceServer) Log(context.Context, *LogRequest) (*LogResponse, error) { +func (UnimplementedLogsServiceServer) Log(context.Context, *LogRequest) (*LogResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Log not implemented") } -func (UnimplementedLogServiceServer) Find(context.Context, *FindRequest) (*FindResponse, error) { +func (UnimplementedLogsServiceServer) Find(context.Context, *FindRequest) (*FindResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Find not implemented") } -func (UnimplementedLogServiceServer) Delete(context.Context, *DeleteRequest) (*DeleteResponse, error) { +func (UnimplementedLogsServiceServer) Delete(context.Context, *DeleteRequest) (*DeleteResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") } -func (UnimplementedLogServiceServer) mustEmbedUnimplementedLogServiceServer() {} +func (UnimplementedLogsServiceServer) mustEmbedUnimplementedLogsServiceServer() {} -// UnsafeLogServiceServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to LogServiceServer will +// UnsafeLogsServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to LogsServiceServer will // result in compilation errors. -type UnsafeLogServiceServer interface { - mustEmbedUnimplementedLogServiceServer() +type UnsafeLogsServiceServer interface { + mustEmbedUnimplementedLogsServiceServer() } -func RegisterLogServiceServer(s grpc.ServiceRegistrar, srv LogServiceServer) { - s.RegisterService(&LogService_ServiceDesc, srv) +func RegisterLogsServiceServer(s grpc.ServiceRegistrar, srv LogsServiceServer) { + s.RegisterService(&LogsService_ServiceDesc, srv) } -func _LogService_Log_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { +func _LogsService_Log_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(LogRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(LogServiceServer).Log(ctx, in) + return srv.(LogsServiceServer).Log(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: LogService_Log_FullMethodName, + FullMethod: LogsService_Log_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LogServiceServer).Log(ctx, req.(*LogRequest)) + return srv.(LogsServiceServer).Log(ctx, req.(*LogRequest)) } return interceptor(ctx, in, info, handler) } -func _LogService_Find_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { +func _LogsService_Find_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(FindRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(LogServiceServer).Find(ctx, in) + return srv.(LogsServiceServer).Find(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: LogService_Find_FullMethodName, + FullMethod: LogsService_Find_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LogServiceServer).Find(ctx, req.(*FindRequest)) + return srv.(LogsServiceServer).Find(ctx, req.(*FindRequest)) } return interceptor(ctx, in, info, handler) } -func _LogService_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { +func _LogsService_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DeleteRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(LogServiceServer).Delete(ctx, in) + return srv.(LogsServiceServer).Delete(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: LogService_Delete_FullMethodName, + FullMethod: LogsService_Delete_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LogServiceServer).Delete(ctx, req.(*DeleteRequest)) + return srv.(LogsServiceServer).Delete(ctx, req.(*DeleteRequest)) } return interceptor(ctx, in, info, handler) } -// LogService_ServiceDesc is the grpc.ServiceDesc for LogService service. +// LogsService_ServiceDesc is the grpc.ServiceDesc for LogsService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) -var LogService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "log.LogService", - HandlerType: (*LogServiceServer)(nil), +var LogsService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "logs.LogsService", + HandlerType: (*LogsServiceServer)(nil), Methods: []grpc.MethodDesc{ { MethodName: "Log", - Handler: _LogService_Log_Handler, + Handler: _LogsService_Log_Handler, }, { MethodName: "Find", - Handler: _LogService_Find_Handler, + Handler: _LogsService_Find_Handler, }, { MethodName: "Delete", - Handler: _LogService_Delete_Handler, + Handler: _LogsService_Delete_Handler, }, }, Streams: []grpc.StreamDesc{}, - Metadata: "log/log_service.proto", + Metadata: "logs/log_service.proto", }