【GO】rotatelogs库和sirupsen/logrus库实现日志功能的实践用例
package main
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/sirupsen/logrus"
"log"
"os"
"time"
)
func main() {
// 日志配置
logFilePath := "./myapp.log"
logFile, err := os.OpenFile(logFilePath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
log.Fatalf("open log file error:%v", err)
}
defer logFile.Close()
// 日志写入配置
logger := logrus.New()
logger.Out = logFile
logger.SetLevel(logrus.DebugLevel)
logger.SetFormatter(&logrus.JSONFormatter{})
// 使用自定义的日志记录器
gin.DefaultWriter = logger.Out
// 路由配置
router := gin.Default()
router.GET("/", func(c *gin.Context) {
logger.WithFields(logrus.Fields{
"animal": "dog",
"size": "small",
}).Info("A new log entry")
c.String(http.StatusOK, "Hello, World!")
})
router.Run(":8080")
}
这段代码首先配置了日志文件的路径和权限,并创建了日志文件。然后,使用logrus库创建了一个日志记录器,并设置了日志的写入目标、日志级别和格式化方式。接着,将Gin框架的默认日志输出改为我们自定义的日志记录器。最后,配置了一个简单的HTTP GET路由,并在路由处理函数中使用自定义的日志记录器记录一条日志,并响应客户端请求。
评论已关闭