You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Oct 12, 2025. It is now read-only.
varmeter=newMeter("Lagrange.Core");varcounter=meter.CreateCounter<long>("lagrange.received_messages");// After receiving a messagecounter.Add(1);
Tracing
可以添加在各种异步耗时操作的方法体内
varsource=newActivitySource("Lagrange.Core");varactivity=source.StartActivity(/* [CallerMemberName] string name */);// Do some work// Duration inside the StartActivity/Dispose will be trackedactivity?.Dispose();
Lagrange项目
Core
新需求内容
因最近有这方面需求想讨论一下。在维护人员认为合适的前提下,我可以负责添加此功能并提交 PR。
What
可观测性(Observability)包含指标(Metrics)、日志(Logging)、追踪(Tracing)三个部分,其中日志很好理解且 Lagrange.Core 已经拥有。
Metrics 就是简单的数据:例如可以存在指标
lagrange.received_messages,值为114,代表此次运行至今总共接收到了 114 条消息。其中可以添加各种 tag,例如{type="group"}或{type="friend"}。Tracing 展示了每个操作的用时及分布情况,可以参考下图:
Why
How
.NET 的标准库中自带
System.Diagnostics.Metrics.Meter和System.Diagnostics.ActivitySource两个类,分别对应 Metrics 和 Tracing 两个概念。微软官方文档:Metrics Tracing
TL;DR:
Metrics
可以添加在各种可以计数的地方
Tracing
可以添加在各种异步耗时操作的方法体内
收集
对于 Lagrange.Core 这个 Library 而言,其实不用关心收集观测信息的问题,只需要产出即可。使用者可以自行通过 OpenTelemetry 等方式进行收集。
如果有需要补充的信息请指出,我会尽量完善