golang中创建logger时候踩过的坑

匿名 (未验证) 提交于 2019-12-02 23:57:01
  • 错误的代码
package main  import (     "fmt"     "io"     "log"     "os" )  var logger *log.Logger  func init(){     fmt.Println("创建日记录日志文件")     f,err:=os.OpenFile("./Log.log",os.O_WRONLY|os.O_CREATE|os.O_APPEND,0644)     if err!=nil{         log.Fatal("os.OpenFile err",err)     }     defer f.Close()     writers := []io.Writer{         f,         os.Stdout}     //实例化Writer接口     fileAndStdoutWriter := io.MultiWriter(writers...)     //MultiWriter创建一个Writer接口,会将提供给其的数据写入所有创建时提供的Writer接口     logger = log.New(fileAndStdoutWriter, "", log.Ldate|log.Ltime|log.Lshortfile)     logger.Println("---> logger:check to make sure is works") }  func main(){     logger.Println("注意,这里是不会打印和写入文件的") } 
  • 出现的错误

    • 在main函数里面logger.Println()不能打印到控制台,也不能写入文件
  • 错误原因

    defer f.Close() //在init函数执行完毕时,关闭文件f,使文件不能用于读写
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!