2017-10-19 21 views
0

私は愛するユーザーに "使いやすい"エラーを表示するサービスを管理します。彼らはエラーが発生した場合、通常彼らはサポートを呼び出し、RequestIdを言及します。私は以下のコードを使用して、このリクエストIDを取得します:ログリクエストID asp.netコア

public string RequestId => Activity.Current?.Id ?? HttpContext.TraceIdentifier; 

は今面白いことがある...我々は、ユーザーにIDを表示するが、我々は我々のログ:)に保管しないでください。

現在、私はいくつかのトラブル私は一貫同上ログインすることができますすべての方法このラムダの下にHttpRequestを送信するための良い方法を見つけることがあり、このコード

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
    { 
     (...) 
     loggerFactory.AddAWSProvider(
      Configuration.GetAWSLoggingConfigSection("Cloudwatch"), 
      (l, obj, ex) => 
      { 
       var level = "info"; 
       if (l == LogLevel.Error || l == LogLevel.Critical) level = "error"; 
       else if (l == LogLevel.Warning) level = "warn"; 
       return JsonConvert.SerializeObject(new 
       { 
        level, 
        msg = ex?.Message ?? obj.ToString(), 
        meta = ex?.ToString() 
       }); 
      }); 

     (...) 
    } 

を使用してCloudWatchのにすべてのログを送信します。

あなたはそれをどのように扱いますか?

public class Startup 
{ 
    ... 
    public void ConfigureServices(IServiceCollection services) 
    { 
     ... 
     services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); 
     ... 
    } 

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, 
     ILoggerFactory loggerFactory, IHttpContextAccessor httpContextAccessor) 
    { 
     ... 

     var httpContext = httpContextAccessor.HttpContext; 
     var user = httpContext.User; 

     ... 
    } 
} 

は、私は同じ環境を設定する方法がありませんので、あなたは私が持っている必要があり、これが働いされているかどうか、私に教えてください:

はあなたが試すことができ、 セブ

答えて

1

をありがとう私が投稿する前にコードをテストする方法はありません。

+0

Omg!私は次の月曜日にそれを試してみよう! Thx – Seb

+0

うまく動作しますか? – Seb

関連する問題