go - 写入现有文件

标签 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上重复该问题。

最佳答案

您可能应该使用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/

相关文章:

go - 无法从 GO 中的其他文件导入包

golang如何自动将logrus错误写入supervisord stderr_logfile

go - Logrus 根据需要与 syslog Hook

go - 将 Elasticsearch 与 Logrus 集成(golang 日志记录)

go - 如果我使用 go.mod,如何使用 gotext extract?

go - 如何通过 go generate 传递参数

go - 如何遍历 PostForm 中的数组值?

http - 同时写入和读取 map 会导致潜在的竞争条件