私のゴールーチン内でロギングファイルに追加しようとすると、不正なファイル記述子が取得されています。ゴールン不良ファイル記述子
write ./log.log: bad file descriptor
ファイルが存在し、アクセス許可のために666を有しています。最初は、それぞれの人が同時にファイルを開こうとしているからだと思いました。私はその試みを避けるためにミューテックスを実装しましたが、同じ問題がありましたので削除しました。あなたはO_WRONLY
フラグを追加する必要があり
logCh := make(chan string, 150)
go func() {
for {
msg, ok := <-logCh
if ok {
if f, err := os.OpenFile("./log.log", os.O_APPEND, os.ModeAppend); err != nil {
panic(err)
} else {
logTime := time.Now().Format(time.RFC3339)
if _, err := f.WriteString(logTime + " - " + msg); err != nil {
fmt.Print(err)
}
f.Close()
}
} else {
fmt.Print("Channel closed! \n")
break
}
}
}()
私は自分のコンピュータで再現できることを確認します。 – HectorJ