golang的log包在打开log文件的时候需要加锁吗?
package main
import "log"
import "os"
import "time"
import "sync"
func LOG(msg string, level string){
if level == ""{
level = "[WARNING]:"
}
var mu sync.Mutex
filename := "./" + time.Now().Format("2006_01_02") + ".log"
//mu.Lock() //要不要加这个锁?
logfile,err := os.OpenFile(filename, os.O_WRONLY|os.O_APPEND|os.O_CREATE,0666) //这里如果多个goroutine同时调用LOG函数会出错吗?
if err != nil{
log.Fatalln("open log file error")
}
logger := log.New(logfile, level, log.LstdFlags|log.Lshortfile)
logger.Println(msg)
logfile.Close()
//mu.Unlock()
}
func main(){
LOG("message", "[INFO]:")
}
我知道golang的log包是goroutine安全的,但是在log.New()文件之前需要先打开日志文件,打开日志文件这一步要不要加锁?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是我的看法:
按照你的写法,那肯定得加锁