Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用lttng筛选EventSource事件_C#_Linux_.net Core_Lttng - Fatal编程技术网

C# 如何使用lttng筛选EventSource事件

C# 如何使用lttng筛选EventSource事件,c#,linux,.net-core,lttng,C#,Linux,.net Core,Lttng,在linux上使用:.NET Core 2.2 UST跟踪/lttng 我尝试只侦听我在应用程序中生成的自定义EventSource事件(以及一些我特别感兴趣的其他事件,但它们不包含在讨论中)。我将这些消息发送到一个lttng relayd守护进程,并希望在某种程度上控制事件数据量。打开EventSource提供程序会生成大量我不想要或不需要的信息,有时会淹没我的频道 lttng启用事件--用户空间--跟踪点DotNETRuntime:EventSource 当我看到这些数据时,我看到了各种各样

在linux上使用:.NET Core 2.2 UST跟踪/lttng

我尝试只侦听我在应用程序中生成的自定义EventSource事件(以及一些我特别感兴趣的其他事件,但它们不包含在讨论中)。我将这些消息发送到一个lttng relayd守护进程,并希望在某种程度上控制事件数据量。打开EventSource提供程序会生成大量我不想要或不需要的信息,有时会淹没我的频道

lttng启用事件--用户空间--跟踪点DotNETRuntime:EventSource

当我看到这些数据时,我看到了各种各样的内置事件,我只想完全避免采样:

===DotNETRuntime:EventSource\uuu System.Diagnostics.Eventing.FrameworkEventSource -电话:11542 -电话:6480 -线程池排队工作:21437 -ThreadPoolDequeueWork:21437 ===DotNETRuntime:EventSource\uu Microsoft-System-Net-Sockets -输入:22771 -信息:27463 -出口:20145 -已连接:1 -接受:1 ===DotNETRuntime:EventSource\uu Microsoft-System-Net-NameResolution -输入:41924 -信息:41922 -出口:27950

这些都是由.NET生成的,我真的对捕获这些事件不感兴趣,只对特定于应用程序的事件集感兴趣

我试图找出可能用于筛选自定义事件集的--filter语法:

--筛选器=“$app.EventSourceName==MyEventSourceName”

我可以在网上找到静态事件的参考示例:

$ctx.procname=='dotnet'

这不是很有用

或使用$app的动态事件,但我需要使用的语法按EventSourceName进行筛选不是很清楚

是否有人具有lttng这方面的经验,可以首先允许跟踪:

export COMPlus_PerfMapEnabled=1
export COMPlus_EnableEventLog=1
或者使用PowerShell

$env:COMPlus_PerfMapEnabled=1
$env:COMPlus_EnableEventLog=1
根据以下代码:

using System.Diagnostics.Tracing;
using System.Collections.Generic;
using System;

namespace Demo1
{
    [EventSource(Name = "JPBLog")]
    class MyCompanyEventSource : EventSource
    {
        public static MyCompanyEventSource Log = new MyCompanyEventSource();

        [Event(1, Message="{0} -> {1}", Channel = EventChannel.Admin)]
        public void Startup() { WriteEvent(1); }

        [Event(2, Message="{0}", Channel = EventChannel.Admin)]
        public void OpenFileStart(string fileName) { WriteEvent(2, fileName); }

        [Event(3, Message="OpenFileStop", Channel = EventChannel.Admin)]
        public void OpenFileStop() { WriteEvent(3); }
    }

    class Program
    {
        static void Main(string[] args)
        {
            string name = MyCompanyEventSource.GetName(typeof(MyCompanyEventSource));
            Console.WriteLine(name);
            IEnumerable<EventSource> eventSources = MyCompanyEventSource.GetSources();
            foreach(EventSource iS in eventSources){
              Console.WriteLine(iS);
            }
            MyCompanyEventSource.Log.Startup();
            // ...
            MyCompanyEventSource.Log.OpenFileStart("SomeFile");
            // ...
            MyCompanyEventSource.Log.OpenFileStop();
        }
    }
}
您将收到:

[17:24:45.219954500] (+?.?????????) cd9a097f0904 DotNETRuntime:EventSource: { cpu_id = 0 }, { EventID = 1, EventName = "Startup", EventSourceName = "JPBLog", Payload = "" }
[17:24:45.223259100] (+0.003304600) cd9a097f0904 DotNETRuntime:EventSource: { cpu_id = 0 }, { EventID = 2, EventName = "OpenFileStart", EventSourceName = "JPBLog", Payload = "{\"EventSource_Message\":\"{0}\", \"fileName\":\"SomeFile\"}" }
[17:24:45.223417300] (+0.000158200) cd9a097f0904 DotNETRuntime:EventSource: { cpu_id = 0 }, { EventID = 3, EventName = "OpenFileStop", EventSourceName = "JPBLog", Payload = "" }
[17:24:45.219954500] (+?.?????????) cd9a097f0904 DotNETRuntime:EventSource: { cpu_id = 0 }, { EventID = 1, EventName = "Startup", EventSourceName = "JPBLog", Payload = "" }
[17:24:45.223259100] (+0.003304600) cd9a097f0904 DotNETRuntime:EventSource: { cpu_id = 0 }, { EventID = 2, EventName = "OpenFileStart", EventSourceName = "JPBLog", Payload = "{\"EventSource_Message\":\"{0}\", \"fileName\":\"SomeFile\"}" }
[17:24:45.223417300] (+0.000158200) cd9a097f0904 DotNETRuntime:EventSource: { cpu_id = 0 }, { EventID = 3, EventName = "OpenFileStop", EventSourceName = "JPBLog", Payload = "" }