这是代码:
tmp, _ := os.OpenFile(filepath.Join(this.dirPath , "Log_"+time.Now().Format(conf.FormatFile())), os.O_CREATE|os.O_WRONLY, os.ModePerm)
logrus.SetOutput(tmp)
它可以正常工作,但是如果再次运行该程序并且已经存在一个具有相同名称的文件,则不会写入该文件,没有错误,没有写入日志,仅此而已。在我看来,这个os.ModePerm标志。
仅在Linux上重复该问题。
最佳答案
您可能应该使用os.O_APPEND
标志。
tmp, _ := os.OpenFile(
filepath.Join(this.dirPath, "Log_"+time.Now().Format(conf.FormatFile())),
os.O_APPEND|os.O_WRONLY,
os.ModePerm,
)
https://godoc.org/os#pkg-constants
关于go - 写入现有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60826209/