私のプロジェクトでは、次のように System.Diagnostics.Tracing.EventSource を使用します。
namespace kafka4net.Tracing
{
[EventSource(Name = "kafka4net")]
public class ConnectionTrace : EventSource
{
public static ConnectionTrace Log = new ConnectionTrace();
public void Connecting(string host, int port)
{
Log.WriteEvent(1, host, port);
}
public void Connected(string host, int port)
{
Log.WriteEvent(2, host, port);
}
}
}
"Additional Providers" フィールドで "*kafka4net" を定義して、動的プロバイダー機能で PerfView を使用します。これにより、プロバイダーがその名前で解決されます。うまく動作します。1 つの例外を除いて。私が見ているイベントは kafka4net/Connecting のものですが、kafka4net/ConnectionTrace/Connecting を見たいと思っています。
一般的に言えば、イベントを製品/サブシステム/イベントにしたいと考えています。「Microsoft-Windows-DotNETRuntime/GC/Start」など、一部のシステム コンポーネントがこの構造を持っていることがわかります。
[EventSource(Name = "kafka4net-Connection")] を配置しようとしましたが、「kafka4net-Connection、kafka4net-Fetcher」などのすべてのサブシステムを列挙する必要があるため、PerfView で動的イベントとして使用することはできません。 . そして、これはいけません。
EventSource には Name プロパティがあり、最上位の「製品」にすることができ、関数名はイベント名階層の最下位レベルとして使用されます。イベント名階層の中間要素「サブシステム」に固執するにはどうすればよいですか?