ホームページ >バックエンド開発 >Golang >Go ログがファイルに書き込まれないのはなぜですか?

Go ログがファイルに書き込まれないのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-21 22:08:17406ブラウズ

Why Are My Go Logs Not Writing to File?

Go でファイルにログを書き込む

標準の Go ログ パッケージを使用してファイルにログを書き込もうとすると、問題が発生する可能性がありますログ ファイルは作成されますが、空のままです。これを解決するには、ログをファイルに書き込むための正しいアプローチを理解することが重要です。

提供されたコードでは、次のような複数のアプローチを試みています。

  • OS の設定。 Stderr とログ出力用の io.MultiWriter としてのファイル。
  • ログ用の io.Writer としてファイルを設定出力。
  • ログの出力としてファイルを直接設定します。

ただし、os.Open("logfile") はファイルを読み取り専用で開くため、これらのメソッドはすべて失敗します。

正しいアプローチは、 os.OpenFile("testlogfile", os.O_RDWR | os.O_CREATE | os.O_APPEND、0666)。これにより、ファイルが読み取りと書き込みの両方で開かれ、ログをファイルに追加できるようになります。

この行を追加し、ログ出力をファイルに設定すると、Go でファイルにログを正常に書き込むことができます。

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")

以上がGo ログがファイルに書き込まれないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。