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);
}

解决分析器错误的唯一方法是使用两个 WriteEvent 参数(例如,事件 id 和 commandId)和一个事件参数(例如,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 回答