zoukankan      html  css  js  c++  java
  • 25.最基本的日志输出方式,内置日志包使用

    package Services
    
    import (
        "context"
        "fmt"
        "github.com/go-kit/kit/endpoint"
        "github.com/go-kit/kit/log"
        "golang.org/x/time/rate"
        "gomicro/utils"
        "os"
        "strconv"
    )
    
    type UserRequest struct { //封装User请求结构体
        Uid    int `json:"uid"`
        Method string
    }
    
    type UserResponse struct {
        Result string `json:"result"`
    }
    
    //加入限流功能中间件
    func RateLimit(limit *rate.Limiter) endpoint.Middleware { //Middleware type Middleware func(Endpoint) Endpoint
        return func(next endpoint.Endpoint) endpoint.Endpoint { //Endpoint type Endpoint func(ctx context.Context, request interface{}) (response interface{}, err error)
            return func(ctx context.Context, request interface{}) (response interface{}, err error) {
                if !limit.Allow() {
                    return nil, utils.NewMyError(429, "toot many request")
                }
                return next(ctx, request)
            }
        }
    }
    
    func GenUserEnPoint(userService IUserService) endpoint.Endpoint {
        return func(ctx context.Context, request interface{}) (response interface{}, err error) {
            var logger log.Logger
            {
                logger = log.NewLogfmtLogger(os.Stdout)
                logger = log.WithPrefix(logger, "mykit", "1.0")
                logger = log.WithPrefix(logger, "time", log.DefaultTimestampUTC) //加上前缀时间
                logger = log.WithPrefix(logger, "caller", log.DefaultCaller) //加上前缀,日志输出时的文件和第几行代码
    
            }
            r := request.(UserRequest) //通过类型断言获取请求结构体
            result := "nothings"
            if r.Method == "GET" {
                result = userService.GetName(r.Uid) + strconv.Itoa(utils.ServicePort)
                logger.Log("method", r.Method, "event", "get user", "userid", r.Uid)
    
            } else if r.Method == "DELETE" {
                err := userService.DelUser(r.Uid)
                if err != nil {
                    result = err.Error()
                } else {
                    result = fmt.Sprintf("userid为%d的用户已删除", r.Uid)
                }
            }
            return UserResponse{Result: result}, nil
        }
    }
    




  • 相关阅读:
    xshell的安装及连接linux的使用方法
    linux中yum install 命令无效
    linux-centOS环境下安装jdk8
    centOS不显示ipv4地址的解决办法
    centOS开启和关闭防火墙
    java-分布式-索引
    java-网络通信-索引
    java-中间件
    java-框架-索引
    JVM-索引
  • 原文地址:https://www.cnblogs.com/hualou/p/12089027.html
Copyright © 2011-2022 走看看