我目前在使用 os.OpenFile 时遇到问题。当我运行 go 测试时,它只是给了我“权限被拒绝”。
type log struct {
Message string
Source string
Timestamp time.Time
ErrorCode ErrorCode
}
type ErrorCode int
const (
Info ErrorCode = 1 + iota
Warning
Error
)
func (errorCode ErrorCode) String() string {
switch errorCode {
case Info:
return "Info"
case Warning:
return "Warning"
case Error:
return "Error"
}
return "Type not found"
}
func writeToLog(logItem log) {
err := os.Chdir("..")
if err != nil {
fmt.Println("Can't change working directory")
}
err = os.Mkdir("logs", os.FileMode(0777))
if err != nil && os.IsNotExist(err) {
fmt.Println("Can't create log directory")
}
f, err := os.OpenFile("logs/log.txt",
os.O_WRONLY|os.O_CREATE|os.O_APPEND, os.FileMode(0666))
if err != nil {
fmt.Println("Can't find logfile")
fmt.Println(err)
}
defer f.Sync()
defer f.Close()
f.WriteString(logItem.ErrorCode.String() + logItem.Source +
logItem.Message + logItem.Timestamp.String())
}
输出:
Can't find logfile
open logs/log.txt: permission denied
Can't find logfile
open logs/log.txt: permission denied
我做错了什么?似乎 OpenFile 没有正确设置我的权限(-rw-r--r--)。
人到中年有点甜
相关分类