計數器由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