有没有办法在.Net中使用新的遗物自定义仪器来检测泛型类?我为非泛型类添加了仪器配置,但没有运气.
小智 5
您需要使用IL签名.确定签名的最佳方法是在Newrelic.config中将New Relic日志记录设置为"all",运行您的应用程序,然后在相应的profiler日志中搜索方法名称(确保在完成后将日志记录设置回信息) .
使用示例代码:
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var t = new Test<int>();
while (true)
{
StartTransaction();
t.mymethod(100);
}
}
static void StartTransaction()
{
Console.WriteLine("Start Transaction");
System.Threading.Thread.Sleep(1100);
MethodA();
}
static void MethodA()
{
Console.WriteLine("MethodA");
}
}
class Test<T>
{
public void mymethod(T t) {
var k = t;
System.Threading.Thread.Sleep(1000);
}
}
}
Run Code Online (Sandbox Code Playgroud)
查看分析器日志,NewRelic.Profiler.[pid]其中[pid]对应于运行应用程序的w3wp进程或其他进程,您将看到以下内容:
[Trace]Possibly instrumenting: (Module: C:\Users\me\Documents\Visual Studio 2013\Projects\ConsoleApplication1\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe, AppDomain: ConsoleApplication1.exe)[ConsoleApplication1]ConsoleApplication1.Test`1.mymethod
Run Code Online (Sandbox Code Playgroud)
构建自定义检测/事务需要不带扩展ConsoleApplication1的AppDomain 和类/方法名称ConsoleApplication1.Test`1.mymethod.
示例(自定义事务):
<?xml version="1.0" encoding="utf-8"?>
<extension xmlns="urn:newrelic-extension">
<instrumentation>
<tracerFactory name="NewRelic.Agent.Core.Tracer.Factories.BackgroundThreadTracerFactory" metricName="Background/MyTaskRunner">
<match assemblyName="ConsoleApplication1" className="ConsoleApplication.Test`1">
<exactMethodMatcher methodName="mymethod" />
</match>
</tracerFactory>
</instrumentation>
</extension>
Run Code Online (Sandbox Code Playgroud)
通常,您不需要在检测文件中指定方法参数.
| 归档时间: |
|
| 查看次数: |
718 次 |
| 最近记录: |