go - 使用 gRPC/Go 处理程序记录
问题描述
我正在尝试通过从 gRPC/Go 函数中打印/记录来调试代码,但输出不会打印到终端。
fmt.Println()
适用于我的main()
方法,但不适用于服务器回调。如何从这些 gRPC 处理程序中打印?如果也有不同的方法,我对其他调试方法持开放态度。
main()
这是我的函数中的相关代码。记录和打印在这里工作:
func main() {
...
lis, err := net.Listen("tcp", fmt.Sprintf("0.0.0.0:%s", os.Getenv("APP_PORT")))
if err != nil {
logger.Error(fmt.Sprintf("Failed start on port: %s", os.Getenv("APP_PORT")), err)
log.Fatalf("Failed to start: %v", err)
}
opts := []grpc.ServerOption{}
s := grpc.NewServer(opts...)
pb.RegisterAuthServiceServer(s, &server{})
// Register reflection service on gRPC server.
reflection.Register(s)
go func() {
fmt.Println("Starting Server...")
if err := s.Serve(lis); err != nil {
log.Fatalf("failed to server: %v", err)
}
}()
// Wait for Control C to exit
ch := make(chan os.Signal, 1)
signal.Notify(ch, os.Interrupt)
// Run until a signal is received
<-ch
fmt.Println("")
fmt.Println("Stopping the server")
s.Stop()
fmt.Println("Closing the listener")
lis.Close()
然后这是我的一个处理程序,其中日志记录或打印不会输出到我启动服务器的终端。
func (*server) AuthUser(ctx context.Context, req *pb.AuthUserRequest) (*pb.AccessToken, error) {
fmt.Println("AuthUser***")
...
解决方案
推荐阅读
- macos - 通过 macOS SwiftUI 应用程序中的应用程序菜单访问前窗口内容?
- tensorflow - TensorFlow中的多元插值方法?
- c# - 如何从资源 ID 获取 blob 属性
- django - 为什么 DRF 建议覆盖序列化程序中的操作?
- groovy - 从 groovy 对象列表中删除属性的最佳方法
- java - 设备培训:无法创建解释器:Op builtin_code 超出范围:142。您是否使用较新型号的旧 TFLite 二进制文件?
- node.js - 运行应用程序时面临 Gulp 问题
- python - 为什么 jupyter 中的 pd.read_excel 停止工作并显示此错误消息?
- javascript - 反应 SSR。调用 ReactDOM.hydrate() 的正确位置
- r - R 中“预测”包中的 NNAR-ARIMA 代码是否正确?