1
0
mirror of https://github.com/go-kratos/kratos.git synced 2025-03-19 21:18:07 +02:00

63 lines
1.6 KiB
Go
Raw Normal View History

2021-02-17 17:14:47 +08:00
package logging
import (
"context"
2021-02-21 17:35:10 +08:00
"fmt"
2021-02-17 17:14:47 +08:00
"github.com/go-kratos/kratos/v2/log"
"github.com/go-kratos/kratos/v2/middleware"
2021-06-03 13:49:13 +08:00
"github.com/go-kratos/kratos/v2/transport"
2021-02-17 17:14:47 +08:00
)
// Server is an server logging middleware.
2021-06-03 13:49:13 +08:00
func Server(logger log.Logger) middleware.Middleware {
2021-02-17 17:14:47 +08:00
return func(handler middleware.Handler) middleware.Handler {
2021-06-03 13:49:13 +08:00
return func(ctx context.Context, req interface{}) (reply interface{}, err error) {
reply, err = handler(ctx, req)
if tr, ok := transport.FromContext(ctx); ok {
switch tr.Kind {
case transport.KindHTTP:
httpServerLog(logger, ctx, extractArgs(req), err)
case transport.KindGRPC:
grpcServerLog(logger, ctx, extractArgs(req), err)
}
2021-02-17 17:14:47 +08:00
}
2021-06-03 13:49:13 +08:00
return
2021-02-17 17:14:47 +08:00
}
}
}
// Client is an client logging middleware.
2021-06-03 13:49:13 +08:00
func Client(logger log.Logger) middleware.Middleware {
2021-02-17 17:14:47 +08:00
return func(handler middleware.Handler) middleware.Handler {
2021-06-03 13:49:13 +08:00
return func(ctx context.Context, req interface{}) (reply interface{}, err error) {
reply, err = handler(ctx, req)
if tr, ok := transport.FromContext(ctx); ok {
switch tr.Kind {
case transport.KindHTTP:
httpClientLog(logger, ctx, extractArgs(req), err)
case transport.KindGRPC:
grpcClientLog(logger, ctx, extractArgs(req), err)
}
2021-02-17 17:14:47 +08:00
}
2021-06-03 13:49:13 +08:00
return
2021-02-17 17:14:47 +08:00
}
}
}
2021-06-03 13:49:13 +08:00
// extractArgs returns the string of the req
2021-06-03 13:49:13 +08:00
func extractArgs(req interface{}) string {
if stringer, ok := req.(fmt.Stringer); ok {
return stringer.String()
}
return fmt.Sprintf("%+v", req)
}
// extractError returns the string of the error
func extractError(err error) (errMsg string) {
2021-06-03 13:49:13 +08:00
if err != nil {
errMsg = fmt.Sprintf("%+v", err)
}
return
}