Go 写入现有文件

Go 写入现有文件,go,logrus,Go,Logrus,代码如下: 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

代码如下:

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\u APPEND
标志

tmp, _ := os.OpenFile(
  filepath.Join(this.dirPath, "Log_"+time.Now().Format(conf.FormatFile())), 
  os.O_APPEND|os.O_WRONLY, 
  os.ModePerm,
)

您可能应该使用
os.O\u APPEND
标志

tmp, _ := os.OpenFile(
  filepath.Join(this.dirPath, "Log_"+time.Now().Format(conf.FormatFile())), 
  os.O_APPEND|os.O_WRONLY, 
  os.ModePerm,
)

我必须使用这个条件,如果文件存在,那么O_APPEND,否则O_CREATE?我想你应该使用这样的东西
os.O_APPEND | os.O_CREATE | os.O_WRONLY
我必须使用这个条件,如果文件存在,那么O_APPEND,否则你会创建吗?我认为你应该使用这样的东西
os.O\u APPEND | os.O\u CREATE | os.O\u WRONLY