- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 Windows 事件日志记录一些事件。 Windows 事件日志中的事件可以分配一些属性。其中之一是 EventID。
现在我想使用 EventId 来尝试对相关错误进行分组。我可以为每次调用我所做的日志记录方法选择一个数字,但这似乎有点乏味。
我希望系统自动执行此操作。它会选择一个 eventId,该 eventId 对于代码中发生日志记录事件的位置是“唯一的”。现在,只有 65536 个唯一的事件 ID,因此可能会发生冲突,但它们应该足够少,以使 EventId 成为对错误进行分组的有用方法。
一种策略是获取堆栈跟踪的哈希码,但这意味着以下代码中的第一次和第二次调用将生成相同的事件 ID。
public void TestLog()
{
LogSomething("Moo");
// Do some stuff and then a 100 lines later..
LogSomething("Moo");
}
我想使用具有 GetFileLineNumber 方法的 StackFrame 类沿着调用堆栈向上移动。这种策略的问题是它只在调试符号打开时才有效。我也需要它在生产代码中工作。
有没有人有什么想法?
最佳答案
您可以使用以下代码生成具有我在问题中描述的属性的 EventID:
public static int GenerateEventId()
{
StackTrace trace = new StackTrace();
StringBuilder builder = new StringBuilder();
builder.Append(Environment.StackTrace);
foreach (StackFrame frame in trace.GetFrames())
{
builder.Append(frame.GetILOffset());
builder.Append(",");
}
return builder.ToString().GetHashCode() & 0xFFFF;
}
frame.GetILOffset() 方法调用给出了执行时该特定帧内的位置。
我将这些偏移量与整个堆栈跟踪连接起来,为程序中的当前位置提供一个唯一的字符串。
最后,由于只有 65536 个唯一的事件 ID,我根据逻辑将哈希码与 0xFFFF 进行逻辑运算,以提取最低有效的 16 位。该值随后成为 EventId。
关于c# - 唯一 EventId 生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/951702/
用户有权访问特定事件。我在用户中有一行称为 EventAccessIds。我想以某种方式拥有用户可以在此处访问的所有 ID。如果用户 A 应该访问事件 1、4 和 8,那么 EventAccessId
.NETCore 2.2 中的 ILogger 有一个 EventId 参数。 public static void LogError(this ILogger logger, EventId eve
我正在我的 ASP.NET Core Web 应用程序中创建一些 LogError 调用 _logger.LogError(new EventId(5000,"CustomName"),"descri
我正在我的 ASP.NET Core Web 应用程序中创建一些 LogError 调用 _logger.LogError(new EventId(5000,"CustomName"),"descri
我正在使用 Windows 事件日志记录一些事件。 Windows 事件日志中的事件可以分配一些属性。其中之一是 EventID。 现在我想使用 EventId 来尝试对相关错误进行分组。我可以为每次
目前,我已经将记录器设置为像这样记录到事件查看器: Log.Logger = new LoggerConfiguration() .MinimumLevel.Infor
当我尝试发布没有 eventId 的事件时,我得到: HTTP/1.1 400 Empty eventId provided. 如果我用随机的东西填充 eventId,那么我得到: HTTP/1.1
我希望为通过 Azure 流分析(IoT 中心输入源)处理的每个事件分配一个唯一的 ID。 看来没有办法在 ASA 中分配一个新的随机 Guid(就像在 SQL 中一样),但我确实遇到了 follow
我想知道是否有一种方法可以在使用 Intent 将事件插入日历期间设置 eventID? 最佳答案 添加新事件时放在下面。 values.put(Events._ID, YOUR EVENT ID.l
我当前正在运行一个使用以下装饰器的 Python Flask 应用程序: def login_required(fn): @wraps(fn) def wrapper(*args, *
可能是论坛上更直接、更快速回答的问题之一。我正在开发一个 openCL 项目,我正在尝试找到一种方法来获取 eventID,以便使用 getEvent() 来找出 GPU 处理图像所花费的时间(我正在
我正在尝试通过日历 Intent 添加事件。但是,我不知道如何获取刚刚添加的事件的事件 ID。 Intent intent = new Intent(Intent.ACTION_EDI
我是 GA 新手,我正在尝试在单击按钮时实现这样的 GA var eventAction = "Click"; var eventLabel = "button text"; var eventVal
我想生成一个日志文件,其中只包含来自特定 EventId(或 EventIds)的日志输出。是否支持此类功能? 最佳答案 如果您插入 Serilog 作为提供程序,您可以继续通过 Microsoft.
我使用 ILogger 的注入(inject)实例而不是 TraceWritter。该实例是从 Azure Function Runtime 注入(inject)的。我想记录捕获的异常。 LogErr
我正在尝试 log some events在我的 ASP.NET Core 应用程序中,我不想与另一个库发生冲突。 自定义 EventId 是否有安全范围EventId.Id ? 我发现的所有 ASP
请大家告诉我怎么用 FlurryAgent.onEvent(String eventId, Map parameters) 在 android Activity 中使用 flurry 跟踪事件? 最佳
我是 SQL 的非常新手,一直在使用 PHP 从 Android 应用程序向 phpmyadmin 运行简单的查询。现在我在处理稍微复杂一点的查询时遇到了麻烦,甚至不确定我的语法是否正确。 我愿意:
我是一名优秀的程序员,十分优秀!