ホームページ > バックエンド開発 > Golang > Go でファイルにログを正常に書き込むにはどうすればよいですか?

Go でファイルにログを正常に書き込むにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-13 07:06:13
オリジナル
557 人が閲覧しました

How to Successfully Write Logs to a File in Go?

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

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.O_RDWR: ファイルを読み取り/書き込みで開きます。 mode
  • os.O_CREATE: ファイルが作成されない場合は作成します。存在
  • os.O_APPEND: ファイルが存在する場合、データをファイルに追加します

os.OpenFile を使用すると、ログが正常に書き込まれるようにするために必要なファイル アクセス許可を指定できます。ファイル。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート