It measures things!
Multimeter abstracts various third party metering services such as New Relic from your code. Using Multimeter prevents direct coupling to a particular service provider. Routing timing and event measurements to a different service is as easy as changing the publisher
configuration in your app.config
.
using (new SelfPublishingTimedMetric("S3", "backup-download"))
{
// Do your expensive work here
}
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="multimeterConfig"
type="Multimeter.Config.MultimeterConfig, Multimeter.Config, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
</configSections>
<multimeterConfig xmlns="Multimeter.Config">
<publishers>
<publisher assemblyName="Multimeter.Publisher.NewRelic" assemblyType="Multimeter.Publisher.NewRelic.NewRelicPublisher"/>
</publishers>
</multimeterConfig>
...
</configuration>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="multimeterConfig" type="Multimeter.Config.MultimeterConfig, Multimeter.Config, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
<section name="loggly" type="Loggly.Config.LogglyAppConfig, Loggly.Config, Version=3.5.0.0, Culture=neutral, PublicKeyToken=null"/>
</configSections>
<multimeterConfig xmlns="Multimeter.Config">
<publishers>
<publisher assemblyName="Multimeter.Publisher.Loggly" assemblyType="Multimeter.Publisher.Loggly.LogglyPublisher"/>
</publishers>
</multimeterConfig>
<loggly xmlns="Loggly" customerToken="your token here" />
</configuration>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="multimeterConfig" type="Multimeter.Config.MultimeterConfig, Multimeter.Config, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
</configSections>
<multimeterConfig xmlns="Multimeter.Config">
<keenIO projectId="5428cdb980a7bd37f451e103" writeKey="01d8a7220a4ac969863"/>
<publishers>
<publisher assemblyName="Multimeter.Publisher.KeenIO" assemblyType="Multimeter.Publisher.KeenIO.KeenIOPublisher"/>
</publishers>
</multimeterConfig>
...
</configuration>