• mindxdlcommonlogger.go


    // Copyright (c) 2021. Huawei Technologies Co., Ltd. All rights reserved.

    // Package common the controller of the program
    package common

    import (
    "fmt"
    "github.com/gin-gonic/gin"
    "huawei.com/npu-exporter/hwlog"
    "math"
    "net/http"
    "time"
    )

    const (
    kilo = 1000.0
    )

    // InitHwlogger initialize run and operate logger
    func InitHwlogger(runLogConfig, opLogConfig *hwlog.LogConfig, stopCh <-chan struct{}) error {
    err := hwlog.InitRunLogger(runLogConfig, stopCh)
    if err != nil {
    return err
    }
    hwlog.RunLog.Debugf("runLogConfig: %v", runLogConfig)
    err = hwlog.InitOperateLogger(opLogConfig, stopCh)
    if err != nil {
    return err
    }
    hwlog.OpLog.Debugf("operateLogConfig: %v", opLogConfig)
    return nil
    }

    // LoggerAdapter for gin framework
    func LoggerAdapter() gin.HandlerFunc {
    return func(c *gin.Context) {
    path := c.Request.URL.Path
    start := time.Now()
    c.Next()
    stop := time.Since(start)
    latency := int(math.Ceil(float64(stop.Nanoseconds()) / kilo / kilo))
    statusCode := c.Writer.Status()
    clientIP := c.ClientIP()
    clientUserAgent := c.Request.UserAgent()
    referer := c.Request.Referer()
    dataLength := c.Writer.Size()

    if dataLength < 0 {
    dataLength = 0
    }
    if len(c.Errors) > 0 {
    hwlog.RunLog.Error(c.Errors.ByType(gin.ErrorTypePrivate).String())
    } else {
    msg := fmt.Sprintf("%s: %s <%3d> (%dms) | %15s | %s| %s ",
    c.Request.Method, path, statusCode, latency, clientIP, referer, clientUserAgent)
    if statusCode >= http.StatusInternalServerError {
    hwlog.OpLog.Error(msg)
    } else if statusCode >= http.StatusBadRequest {
    hwlog.OpLog.Warn(msg)
    } else {
    hwlog.OpLog.Info(msg)
    }
    }

    }
    }
  • 相关阅读:
    2016年 河南工业大学校赛 D题.rqy的键盘
    2016年 河南工业大学校赛 C题.魔法宝石
    jqueryMobile导航
    jqueryMobile列表
    jqueryMobile
    停止css3动画
    导航条
    移动端前面必须加的两行代码
    标签页
    file上传图片预览(此方法支持app)
  • 原文地址:https://www.cnblogs.com/gongxianjin/p/16683173.html
Copyright © 2020-2023  润新知