1 go使用gin web框架,logrus日志 示例
package main
import (
"encoding/json"
"fmt"
"github.com/gin-gonic/gin"
"github.com/sirupsen/logrus"
"net/http"
"os"
)
func main() {
log := logrus.New()
// 设置日志级别
log.SetLevel(logrus.DebugLevel)
// 设置日志输出格式为JSON格式
log.SetFormatter(&logrus.JSONFormatter{})
// 设置日志输出到标准输出
log.SetOutput(os.Stdout)
file, err := os.OpenFile("logfile.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err == nil {
log.SetOutput(file)
} else {
log.Info("Failed to open log file, using default stderr")
}
日志保存到文件
//file, err := os.OpenFile("logfile.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
//if err != nil {
// log.Fatal(err)
//}
defer file.Close()
log.SetOutput(file)
// 创建一个Gin实例
r := gin.Default()
// 加载HTML模板文件
r.LoadHTMLGlob("templates/*")
// 定义路由和处理函数
r.GET("/", func(c *gin.Context) {
c.HTML(200, "index.html", gin.H{
"title": "Gin HTML Demo",
})
})
// 定义路由和处理函数
r.GET("/login", func(c *gin.Context) {
//程序逻辑
name := c.Query("name")
var title string = "Gin HTML Demo xxxxxxxxxx"
fmt.Println("name", name, "title", title)
//返回到指定html
c.HTML(200, "login.html", gin.H{
"title": title,
"name": name,
})
})
// 定义路由和处理函数
r.GET("/test", func(c *gin.Context) {
//程序逻辑
name := c.Query("name")
log.Info("This is an info message name=", name)
log.Error("This is an info message name=", name)
// 返回json数据
testJson(c, name)
})
// 启动服务
err = r.Run(":9089")
if err != nil {
fmt.Println("启动错误")
return
}
}
// 返回json
func testJson(c *gin.Context, name string) {
// 创建一个JSON对象
jsonObj := make(map[string]interface{})
jsonObj["name"] = name
jsonObj["age"] = 30
jsonObj["isStudent"] = false
// 将JSON对象转换为JSON字符串
jsonData, err := json.Marshal(jsonObj)
if err != nil {
fmt.Println("转换为JSON字符串时出错:", err)
return
}
jsonString := string(jsonData)
fmt.Println(jsonString)
c.JSON(http.StatusOK, jsonObj)
}