语义日志记录分析器WriteEvent参数和事件参数的异常数不同

本文关键字:参数 异常 事件 日志 记录 分析器 WriteEvent 语义 | 更新日期: 2023-09-27 18:27:48

此片段使语义日志分析器抛出"WriteEvent参数和事件参数的数量在事件名称'HandlingCommand'中不同。"

[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和命令id)和一个事件参数(例如命令id)。如果我尝试使用具有多个参数/自变量的任何组合,则会引发上述异常。异常是在具有多个参数/自变量的任何事件上引发的,而不仅仅是提供的示例。

我以这些样品为起点https://github.com/mspnp/semantic-logging/tree/master/quickstarts.

语义日志记录分析器WriteEvent参数和事件参数的异常数不同

我遇到了同样的错误,无法解决。最终,我得到了EventSourceAnalyzer代码,进行了编译和调试。

我发现我的WriteEvent实际上在写以下内容:
EventSourceException在处理事件"MethodName"时:操作系统没有可用的可用缓冲区(例如事件速率太快)

在EventSourceAnalyzer类中有以下行:
if (eventParameters.Length != this.EventData.Payload.Count)
throw mismatch exception

现在,因为我的WriteEvent实际上传递了3个参数,WriteEvent实际上抛出了一个错误,这一事实导致EventSourceAnalyzer错误地将其解释为不匹配。