2017-01-30 71 views
1

私はGo言語エコーフレームワークで開発しています。golangでは、ログ内のスレッドなどをどのように識別できますか?

私はロガーを設計していますが、スレッドIDに相当するログをログに記録したいのですが、良い方法はわかりません。

たとえば、ログイン処理が複数のアクセスで同時に実行された場合、一方の側で成功し、片側で失敗します。 失敗したログを調べることで判断することはできません。

Go言語では、goroutineのIDは存在しますが、私はそれを得るべきではありません。 元々、goroutineは同じスレッドでは同じではないと言われました。

スレッドをどのように識別できますか? ログに入れるパッケージがありますか?

母国語ではないので英語が間違っていると申し訳ありません。おかげさまで

+0

参照http://stackoverflow.com/questions/33947545/go-log-thread-id-in-gorilla-handler – nos

答えて

2

GoルーチンのGoLangにはスレッドIDと同等のものはありません。

contextを作成し、一意のID(要求IDが望ましい)を添付してください。すべての機能がコンテキストを受け入れるようにしてください。ロガーライブラリにコンテキストを取得させ、一意のIDを出力させます。このようにコンテキストを使用することで、ログの情報を共有することもできます。

0

私は個人的にはlog4jを使用してください。Log4J in Go

非常に使いやすく、時間とサイズに基づいてファイルの回転などのすべての機能も備えています。また、ファイル名と行番号を含む完全なエラースタックを格納することもできます。

関連する問題