上記は正しいですが、アプリケーションで Trace 呼び出しをインターセプトする独自のカスタム TraceWriter インスタンスを作成することもできます。
TraceWriter クラスの例:
using System.Diagnostics;
using Microsoft.Azure.WebJobs.Host;
namespace MiscOperations
{
/// <summary>
/// Custom <see cref="TraceWriter"/> demonstrating how JobHost logs/traces can
/// be intercepted by user code.
/// </summary>
public class CustomTraceWriter : TraceWriter
{
public CustomTraceWriter(TraceLevel level)
: base(level)
{
}
public override void Trace(TraceEvent traceEvent)
{
// handle trace messages here
}
}
}
次に、JobHostConfuration セットアップで、TraceWriter クラスのインスタンスをコンソール アプリケーションのメイン メソッドに登録します。つまり、Program.cs にあります。
JobHostConfiguration config = new JobHostConfiguration()
{
NameResolver = new ConfigNameResolver(),
};
// Demonstrates how the console trace level can be customized
config.Tracing.ConsoleLevel = TraceLevel.Verbose;
// Demonstrates how a custom TraceWriter can be plugged into the
// host to capture all logging/traces.
config.Tracing.Tracers.Add(new CustomTraceWriter(TraceLevel.Info));
JobHost host = new JobHost(config);
host.RunAndBlock();
このようにして、外部サービスへの書き込みやアラートの作成など、トレースを使用して他のことを行うことができます。
Azure SKD サンプル Gitthubから取得
CustomTraceWriter.cs
Program.cs