W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
Logging 中間件用于打印服務(wù)收到或發(fā)起的請求詳情。
在 ?grpc.ServerOption
? 中引入 ?logging.Server()
?, 則會在每次收到 gRPC 請求的時候打印詳細(xì)請求信息。
logger := log.DefaultLogger
var opts = []grpc.ServerOption{
grpc.Middleware(
logging.Server(logger),
),
}
srv := grpc.NewServer(opts...)
在 ?grpc.WithMiddleware
? 中引入 ?logging.Client()
?, 則會在每次發(fā)起 grpc 請求的時候打印詳細(xì)請求信息。
logger := log.DefaultLogger
conn, err := transgrpc.DialInsecure(
context.Background(),
grpc.WithEndpoint("127.0.0.1:9000"),
grpc.WithMiddleware(
logging.Client(logger),
),
)
在 ?http.ServerOption
? 中引入 ?logging.Server()
?, 則會在每次收到 Http 請求的時候打印詳細(xì)請求信息。
logger := log.DefaultLogger
var opts = []http.ServerOption{
http.Middleware(
logging.Server(logger),
),
}
srv := http.NewServer(opts...)
在 ?http.WithMiddleware
? 中引入 ?logging.Client()
?, 則會在每次發(fā)起 Http 請求的時候打印詳細(xì)請求信息。
logger := log.DefaultLogger
conn, err := http.NewClient(
context.Background(),
http.WithMiddleware(
logging.Client(logger),
),
http.WithEndpoint("127.0.0.1:8000"),
)
Logging 中間件在server 中只打印 trace_id 不采集數(shù)據(jù)
exporter, err := stdouttrace.New(stdouttrace.WithWriter(ioutil.Discard))
if err != nil {
fmt.Printf("creating stdout exporter: %v", err)
panic(err)
}
tp := tracesdk.NewTracerProvider(
tracesdk.WithBatcher(exporter),
tracesdk.WithResource(resource.NewSchemaless(
semconv.ServiceNameKey.String(Name)),
))
var opts = []grpc.ServerOption{
grpc.Middleware(
tracing.Server(tracing.WithTracerProvider(tp)),
),
}
srv := grpc.NewServer(opts...)
logger := log.With(log.NewStdLogger(os.Stdout),
"ts", log.DefaultTimestamp,
"caller", log.DefaultCaller,
"service.id", id,
"service.name", Name,
"service.version", Version,
"trace_id", tracing.TraceID(),
"span_id", tracing.SpanID(),
)
log.WithContext(ctx).Errorf("創(chuàng)建xxx失敗: %s", err)
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: