2016-01-19 11 views
21

WebアプリケーションとしてAzureでホストしているASP.NET 5 Web APIがあります。 Azure Diagnosticsを使用してコードからメッセージをログに記録したい一度有効にされたSystem.Diagnostics.Trace.WriteLineと同じくらい簡単でなければならないことを示唆するAzure docsを含む複数の記事があります。ログは、LogsFiles/ApplicationとAzureのログストリームに表示されます。Azure Web AppとしてホストされているASP.NET 5アプリケーションからのログ

私は、Webアプリケーションのためのアプリケーションのログを有効:

enter image description here

しかし、以下の呼び出しは何のログを生成しない:

System.Diagnostics.Trace.TraceError("TEST"); 
System.Diagnostics.Trace.TraceInformation("TEST"); 
System.Diagnostics.Trace.TraceWarning("TEST"); 
System.Diagnostics.Trace.WriteLine("TEST"); 

私は手動でTRACEシンボルを定義しようとしたが、運と:

enter image description here

私はまた、新しいMicrosoft.Extensions.Loggingフレームワークを使用してILogger.Log APIを使用しようとしましたが、再び任意の結果なし:私が間違っているのかについて

public void Configure(IApplicationBuilder app, 
         IHostingEnvironment env, 
         ILoggerFactory loggerFactory) 
{ 
    loggerFactory.MinimumLevel = LogLevel.Debug; 

    var sourceSwitch = new SourceSwitch("Sandbox.AspNet5.ApiApp-Demo"); 
    sourceSwitch.Level = SourceLevels.All; 
    loggerFactory.AddTraceSource(sourceSwitch, 
           new ConsoleTraceListener(false)); 
    loggerFactory.AddTraceSource(sourceSwitch, 
           new EventLogTraceListener("Application")); 
} 

任意のアイデア?

+0

こんにちは、あなたのweb.configをチェックしましたか?聴取者には明確な点があるのですか、または紺碧の者を正しく登録しましたか? https://azure.microsoft。 –

+0

Visual Studioのログ・ストリームをCloud Explorerウィンドウから開始します(Webサイトに移動し、右クリックし、ストリーミング・ログを表示します)。これにより、1時間のログストリーミングが可能になります。 KUDUポータルのログストリームが必ずしも起動するとは限りません。私の経験です。 –

+0

@MikeMiller asp.net5で同じことを指している指示はありますか? –

答えて

9

web.configを見ると、おそらくstdoutLogEnabled="false"となります。これをtrueに設定すると、標準出力に書き込まれたものはすべてファイルに書き込まれます。 stdoutLogFileはどこに行くのかを決定します。デフォルトではd:\home\logfilesです。

これで、実際にロギングが実際にstdoutに行われていることを確認する必要があります。 Console.WriteLineを行うことは間違いなく機能します。 startup.csILoggerFactoryでログを構成し、ログをstdoutにすることも可能でしょう。

+1

これは、Webアプリケーションファイルシステムにログを書き出し、 "古い" asp.netと同じように青空ブロブストレージを取得する方法を見つけることを望んでいました。誰もがAzureブロブストレージにログを取得するための実用的なソリューションを証明していない場合、恩恵によって恩恵を受けています。 –

+0

これはまだサポートされていませんが、それは来るでしょう。おそらく、https://github.com/davidebbo-test/ConsoleInterceptorに基づいて独自のサポートを作成することはできますが、それには少しの作業が必要です。 –

+0

オクラホマ、それが準備されるのに1〜3(または6)かかりますか? –

5

私は(David Ebbo's exampleに基づいて)次のクラスを記述することによってASP.NET 5ウェブアプリのために働いてストリーミングログ出力を得た。その後、

public class AzureApplicationLogTraceListener : TraceListener 
{ 
    private readonly string _logPath; 
    private readonly object _lock = new object(); 

    public AzureApplicationLogTraceListener() 
    { 
     string instanceId = Environment.GetEnvironmentVariable("WEBSITE_INSTANCE_ID"); 
     if (instanceId != null) 
     { 
      string logFolder = Environment.ExpandEnvironmentVariables(@"%HOME%\LogFiles\application"); 
      Directory.CreateDirectory(logFolder); 
      instanceId = instanceId.Substring(0, 6); 
      _logPath = Path.Combine(logFolder, $"logs_{instanceId}.txt"); 

     } 
    } 

    public override void Write(string message) 
    { 
     if (_logPath != null) 
     { 
      lock (this) 
      { 
       File.AppendAllText(_logPath, message); 
      } 
     } 
    } 

    public override void WriteLine(string message) 
    { 
     Write(message + Environment.NewLine); 
    } 
} 

、私のStartup.Configureでこれを置く:

Trace.Listeners.Add(new AzureApplicationLogTraceListener()); 

これは、ファイルシステムベースのロギングのみをサポートします(ライブログストリームには十分です)。私は紺碧のアプリのための簡単なトリックを見つけた

+3

これはSystem.Diagnostics.Trace。*のためだけに機能しますか?それともILoggerを使用するためにも機能しますか? –

+0

チャームのように働いた。ありがとう。 –

9

https://github.com/aspnet/Logging/tree/dev/src/Microsoft.Extensions.Logging.AzureAppServicesを参照してください、 パッケージ「Microsoft.Extensions.Logging.AzureAppServices」を追加してください: 追加、「1.0.0-preview1ファイナル」およびアップデートに関連する依存関係をこのようなstartup.csで紺碧の診断:

loggerFactory.AddConsole(Configuration.GetSection("Logging")); 
loggerFactory.AddDebug(); 
loggerFactory.AddAzureWebAppDiagnostics(); // for default setting. 

またはカスタム設定のための

loggerFactory.AddAzureWebAppDiagnostics(new AzureAppServicesDiagnosticsSettings(...)); // add custom setting. 
// see here for detailed member properties: https://github.com/aspnet/Logging/blob/dev/src/Microsoft.Extensions.Logging.AzureAppServices/AzureAppServicesDiagnosticsSettings.cs 

と診断は紺碧にログオンを有効、ブロブやファイルのロギングの両方がうまく機能しています。余分な設定が不要です( )。 :)

関連する問題