I'm currently having a problem with os.OpenFile. It just gives me "permission denied" when i run my go test.
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())
}
Output:
Can't find logfile
open logs/log.txt: permission denied
Can't find logfile
open logs/log.txt: permission denied
What am I doint wrong? It seems like OpenFile doesn't set my permissions correctly (-rw-r--r--).
Thanks in advance