Grpc.Core.GrpcEnvironment.SetLogger( new Grpc.Core.Logging.ConsoleLogger() );
ログを出力するには、Grpc.Core.GrpcEnvironment.Logger に対してログ出力メソッドを呼び出します。
Grpc.Core.GrpcEnvironment.Logger.Info("サービスを開始しました。"); 出力結果 I0113 15:12:33.540038 サービスを開始しました。
Google.ProtoBuf で提供されているロガー
ロガー | 説明 |
---|---|
ConsoleLogger | コンソールにログを出力します。 |
TextWriterLogger | テキストファイルにログを出力します。 |
LogLevelFilterLogger | ログレベルによるフィルタを行うためのロガー。ログレベルと出力先のロガーを指定します。 |
NullLogger | 何も処理を行わないダミーのロガー。何もログを出力する必要がないときに使用します。 |
Grpc.Core.Logging.ILogger インターフェースの実装はそれほど難しいものではありませんので、上記の既定のロガー以外にも独自のロガーを用意しておくとよいと思います。
- イベントログにログを出力するロガー
- Event Tracing for Windows にログを出力するロガー
- データベースにログを出力するロガー
- 指定された複数のロガーに対してログを出力するロガー
- 特定の型専用のロガー
特定の型専用のロガー
特定の型専用のロガーは次のように実装します。
- ILogger.ForType<T> メソッドで T に対するロガーを返すように実装したロガーを実装します。
- 1 のロガーを Grpc.Core.GrpcEnvironment.SetLogger メソッドで設定します。
- ログ出力を実装するコードから Grpc.Core.GrpcEnvironment.Logger.ForType<T> メソッドを呼び出して T に対するロガーを取得します。
- 3 のロガーに対してログを出力します。
実際、gRPC では多くのクラスで次のように実装されています。 GrpcEnvironment に設定されたロガーに対して ForType メソッドを呼び出し、その型に対するロガーを取得します。 そのロガーを静的フィールドに格納し、ログ出力に用いています。
public class HogeClass { static readonly ILogger Logger = GrpcEnvironment.Logger.ForType(typeof(HogeClass)); private void HogeMethod() { Logger.Info("HogeMethod Start."); } }
0 件のコメント:
コメントを投稿