golang中創建logger時候踩過的坑


golang中創建logger時候踩過的坑

  • 錯誤的代碼
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,使文件不能用於讀寫
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM