【问题标题】:Writing to existing file写入现有文件
【发布时间】:2020-03-24 06:55:52
【问题描述】:

代码如下:

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上重复。

【问题讨论】:

    标签: go logrus


    【解决方案1】:

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

    【讨论】:

    • 我必须使用条件,如果文件存在,则O_APPEND,否则O_CREATE?
    • 我认为你应该使用这样的东西os.O_APPEND | os.O_CREATE | os.O_WRONLY
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 2012-03-10
    • 2018-09-23
    相关资源
    最近更新 更多