最近一个新项目使用了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不输出日志问题,不妨看看是否是日志文件夹不存在导致。