2

私のプロジェクトでは、次のように 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 プロパティがあり、最上位の「製品」にすることができ、関数名はイベント名階層の最下位レベルとして使用されます。イベント名階層の中間要素「サブシステム」に固執するにはどうすればよいですか?

4

1 に答える 1

2

ProviderName/Event/OpCodeこれは、PerfView でイベントを表示する規則であるため、実行できません。

Microsoft-Windows-DotNETRuntime/GC/Startもこれに従います。Microsoft-Windows-DotNETRuntime isプロバイダー、GCはイベントでStartあり、OpCode です。

Tasks を使用して、より良い出力を得ることができます。

public class Tasks
{
    public const EventTask Connect = (EventTask)0x1;
}

[EventSource(Name = "kafka4net")]
public sealed class ConnectionTrace : EventSource
{
    public static ConnectionTrace Log = new ConnectionTrace();

    [Event(1, Task = Tasks.Connect, Opcode = EventOpcode.Start)]
    public void Connecting(string host, int port)
    {
        if (Log.IsEnabled())
        {
            Log.WriteEvent(1, host, port);
        }
    }

    [Event(2, Task = Tasks.Connect, Opcode = EventOpcode.Stop)]
    public void Connected(string host, int port)
    {
        if (Log.IsEnabled())
        {
            Log.WriteEvent(2, host, port);
        }
    }
}

ここでは、PerfView でより適切な出力が得られます。

ここに画像の説明を入力

于 2014-12-27T16:15:01.800 に答える