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