3

このフラグメントにより、セマンティック ログ アナライザーは「イベント名 'HandlingCommand' で WriteEvent 引数とイベント パラメーターの数が異なります。」 をスローします。

[NonEvent]
public void HandlingCommand(Command command)
{
    if (this.IsEnabled())
    {
        this.HandlingCommand(command.Id.ToString(), command.Agent.AgentId.ToString());
    }
}

[Event(1101,
    Level = EventLevel.Informational,
    Keywords = Keywords.Agent)]
private void HandlingCommand(string commandId, string agentId)
{
    this.WriteEvent(1101, commandId, agentId);
}

アナライザー エラーを解決する唯一の方法は、2 つの WriteEvent パラメーター (たとえば、イベント ID と commandId) と 1 つのイベント引数 (たとえば、commandId) を使用することです。複数のパラメーター/引数を組み合わせて使用​​しようとすると、上記の例外がスローされます。例外は、提供された例だけでなく、複数のパラメーター/引数を持つすべてのイベントでスローされます。

これらのサンプルを出発点https://github.com/mspnp/semantic-logging/tree/master/quickstartsとして使用しました。

4

1 に答える 1

2

私は同じエラーに遭遇し、それを理解できませんでした。最終的に、EventSourceAnalyzer コードをコンパイルしてデバッグしました。

私が見つけたのは、WriteEvent実際には次のように書いていたことです:
EventSourceException while processing event "MethodName": No Free Buffers available from the operating system (eg event rate too fast)。

EventSourceAnalyzer クラスには、次の行があります。
if (eventParameters.Length != this.EventData.Payload.Count)
throw mismatch exception

さて、 myWriteEventは実際には 3 つのパラメーターを渡していたため、 がWriteEvent本質的にエラーをスローしていたという事実により、 はEventSourceAnalyzerそれを不一致として誤って解釈しました。

于 2016-10-04T21:30:02.743 に答える