Go を使用してファイルにログを記録しようとして、次のようないくつかのアプローチが試みられました。
func TestLogging(t *testing.T) { if !FileExists("logfile") { CreateFile("logfile") } f, err := os.Open("logfile") if err != nil { t.Fatalf("error: %v", err) } // attempt #1 log.SetOutput(io.MultiWriter(os.Stderr, f)) log.Println("hello, logfile") // attempt #2 log.SetOutput(io.Writer(f)) log.Println("hello, logfile") // attempt #3 log.SetOutput(f) log.Println("hello, logfile") }
しかし、ログ ファイル (logfile) を作成したにもかかわらず、情報は書き込まれませんでした。
解決策には、次の使用が含まれます。 os.Open の代わりに os.OpenFile を使用すると、ファイル アクセス許可をより詳細に制御できます。次のコードは、ログ ファイルに正常に書き込みます:
f, err := os.OpenFile("testlogfile", os.O_RDWR | os.O_CREATE | os.O_APPEND, 0666) if err != nil { log.Fatalf("error opening file: %v", err) } defer f.Close() log.SetOutput(f) log.Println("This is a test log entry")
このアプローチでは、次のフラグを持つ os.OpenFile を利用します:
os.OpenFile を使用すると、ログが正常に書き込まれるようにするために必要なファイル アクセス許可を指定できます。ファイル。
以上がGo でファイルにログを正常に書き込むにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。