最近一个新项目使用了Golang WEB框架Gin,之前也用过这个框架,都挺好的,但最近发现一个奇怪的问题就是Gin没有输出任何日志内容。(包括终端和日志文件)

代码分析

先上代码:

// 启动Gin
func Start() {
    //Gin运行默认
    RunMode := controller.ConfigGet("servers.RunMode")
    gin.SetMode(RunMode)

    //日志记录到文件
    f, _ := os.Create("logs/run.log")
    gin.DefaultWriter = io.MultiWriter(f)
    //日志同时输出到控制台
    gin.DefaultWriter = io.MultiWriter(f, os.Stdout)

    //运行Gin
    r := gin.Default()

    //使用跨域中间件
    r.Use(cors())

    //路由配置
    r.GET("/api/check/icmp", auth(), controller.CheckIcmp)
    r.GET("/api/check/tcp", auth(), controller.CheckTcp)

    //获取服务端配置
    port := controller.ConfigGet("servers.port")
    r.Run(port)
}

乍一看,这代码似乎没有什么问题,而且启动的时候没有任何报错。一开始以为是Gin的BUG,但是对比了其它项目的Gin版本,都是一样的,而且代码内容几乎一样。网上也没有搜到类似的情况。

问题解决

f, _ := os.Create("logs/run.log")os.Create()logs/run.log

那么要解决这个问题,有2个办法:

logsos.Mkdir()

最后

还是怪自己粗心大意,开发还是要认真严谨才行。如果你也有遇到类似Gin不输出日志问题,不妨看看是否是日志文件夹不存在导致。