package main import ( "net" "time" "github.com/cloudwego/kitex/pkg/klog" "github.com/cloudwego/kitex/pkg/rpcinfo" "github.com/cloudwego/kitex/server" "github.com/joho/godotenv" kitexlogrus "github.com/kitex-contrib/obs-opentelemetry/logging/logrus" "github.com/suyiiyii/hertz101/app/user/conf" "github.com/suyiiyii/hertz101/rpc_gen/kitex_gen/user/userservice" "go.uber.org/zap/zapcore" "gopkg.in/natefinch/lumberjack.v2" ) func main() { err := godotenv.Load() if err != nil { klog.Error(err.Error()) } opts := kitexInit() svr := userservice.NewServer(new(UserServiceImpl), opts...) err = svr.Run() if err != nil { klog.Error(err.Error()) } } func kitexInit() (opts []server.Option) { // address addr, err := net.ResolveTCPAddr("tcp", conf.GetConf().Kitex.Address) if err != nil { panic(err) } opts = append(opts, server.WithServiceAddr(addr)) // service info opts = append(opts, server.WithServerBasicInfo(&rpcinfo.EndpointBasicInfo{ ServiceName: conf.GetConf().Kitex.Service, })) // klog logger := kitexlogrus.NewLogger() klog.SetLogger(logger) klog.SetLevel(conf.LogLevel()) asyncWriter := &zapcore.BufferedWriteSyncer{ WS: zapcore.AddSync(&lumberjack.Logger{ Filename: conf.GetConf().Kitex.LogFileName, MaxSize: conf.GetConf().Kitex.LogMaxSize, MaxBackups: conf.GetConf().Kitex.LogMaxBackups, MaxAge: conf.GetConf().Kitex.LogMaxAge, }), FlushInterval: time.Minute, } klog.SetOutput(asyncWriter) server.RegisterShutdownHook(func() { asyncWriter.Sync() }) return }