计数器由64位整数表示,可以递增或递减
通过调用静态Metric类或MetricsContext子类上的适当方法注册计数器。有关详细信息,请参见《metrics grouping & organization》。
简单计数器样例
public class Cache
{
private static readonly Counter counter =
Metric.Counter("ItemsInCache", Unit.Items);
private void AddItems(object[] items)
{
counter.Increment(items.Length);
}
private void AddItem(object item)
{
counter.Increment();
}
private void RemoveItem(object item)
{
counter.Decrement();
}
}
给一个集合计数
计数器还提供跟踪有限集合中每个条目的计数器的能力。例如,您有一个处理一组命令的系统。在Process方法中,您需要计算已处理命令的总数,但也希望每个命令类型都有一个计数器。如果命令的数量很大,则手动定义和增加每个计数器可能会很难做。
幸运的是,计数器可以跟踪你的子计数器:
public class SetCounterSample
{
private readonly Counter commandCounter =
Metric.Counter("Command Counter", Unit.Custom("Commands"));
public interface Command { }
public class SendEmail : Command { }
public class ShipProduct : Command { }
public class BillCustomer : Command { }
public class MakeInvoice : Command { }
public class MarkAsPreffered : Command { }
public void Process(Command command)
{
this.commandCounter.Increment(command.GetType().Name);
// do actual command processing
}
}
在运行几个请求之后,文本格式的计数器的输出如下所示:
Command Counter
Count = 2550 Commands
Total Items = 5
Item 0 = 20.90% 533 Commands [BillCustomer]
Item 1 = 19.22% 490 Commands [MakeInvoice]
Item 2 = 19.41% 495 Commands [MarkAsPreffered]
Item 3 = 20.98% 535 Commands [SendEmail]
Item 4 = 19.49% 497 Commands [ShipProduct]
正如你所看到的,总计数被记录下来(2550个命令已经被执行),但也记录了每个命令的总数和百分比。
译自:https://github.com/Recognos/Metrics.NET/wiki/Counters