esemény
AI-alkalmazások és -ügynökök létrehozása
márc. 17. 21 - márc. 21. 10
Csatlakozzon a meetup sorozathoz, hogy valós használati esetek alapján, skálázható AI-megoldásokat hozzon létre más fejlesztőkkel és szakértőkkel.
RegisztrációEzt a böngészőt már nem támogatjuk.
Frissítsen a Microsoft Edge-re, hogy kihasználhassa a legújabb funkciókat, a biztonsági frissítéseket és a technikai támogatást.
Ez a cikk a következő verziókra vonatkozik: ✔️ .NET Core 3.1 és újabb verziók ✔️ .NET-keretrendszer 4.5-ös és újabb verziókra
Az Első lépések útmutató bemutatta, hogyan hozhat létre minimális EventSource-eseményforrást, és hogyan gyűjthet eseményeket egy nyomkövetési fájlban. Ez az oktatóanyag bemutatja, hogy a különböző eszközök hogyan konfigurálhatják a nyomkövetésben gyűjtött eseményeket, majd tekinthetik meg a nyomkövetéseket.
Az alábbi mintaalkalmazást fogja használni, amely eseményeket hoz létre ehhez az oktatóanyaghoz. Állítson össze egy .NET-konzolalkalmazást, amely a következő kódot tartalmazza:
using System.Diagnostics.Tracing;
namespace EventSourceDemo
{
public static class Program
{
public static void Main(string[] args)
{
DemoEventSource.Log.AppStarted("Hello World!", 12);
DemoEventSource.Log.DebugMessage("Got here");
DemoEventSource.Log.DebugMessage("finishing startup");
DemoEventSource.Log.RequestStart(3);
DemoEventSource.Log.RequestStop(3);
}
}
[EventSource(Name = "Demo")]
class DemoEventSource : EventSource
{
public static DemoEventSource Log { get; } = new DemoEventSource();
[Event(1, Keywords = Keywords.Startup)]
public void AppStarted(string message, int favoriteNumber) => WriteEvent(1, message, favoriteNumber);
[Event(2, Keywords = Keywords.Requests)]
public void RequestStart(int requestId) => WriteEvent(2, requestId);
[Event(3, Keywords = Keywords.Requests)]
public void RequestStop(int requestId) => WriteEvent(3, requestId);
[Event(4, Keywords = Keywords.Startup, Level = EventLevel.Verbose)]
public void DebugMessage(string message) => WriteEvent(4, message);
public class Keywords
{
public const EventKeywords Startup = (EventKeywords)0x0001;
public const EventKeywords Requests = (EventKeywords)0x0002;
}
}
}
A legtöbb eseménygyűjtő eszköz ezeket a konfigurációs beállításokat használja annak eldöntésére, hogy mely eseményeket kell szerepeltetni a nyomkövetésben:
Bár minden eszköz meghatározza a saját felhasználói felületét a nyomkövetési konfiguráció beállításához, van egy általános konvenció, amelyet számos eszköz használ a konfiguráció szöveges sztringként való megadásakor. A szolgáltatók listája pontosvesszővel tagolt listaként van megadva, és a lista minden szolgáltatóeleme névből, kulcsszavakból és szintből áll, kettőspontokkal elválasztva. A "Demo:3:5" például azonosítja a "Demo" nevű EventSource-t a 3. bitmaszk (a Startup
bit és a Requests
bit) kulcsszóval, és EventLevel 5-öt, amely a következő Verbose
: . Számos eszköz is lehetővé teszi, hogy kihagyja a szintet és a kulcsszavakat, ha nincs szükség szint- vagy kulcsszószűrésre. A "Demo:::5" például csak szintalapú szűrést végez, a "Demo:3" csak kulcsszóalapú szűrést végez, a "Demo" pedig nem végez kulcsszó- vagy szintszűrést.
A Visual Studio profilkészítője támogatja a nyomkövetések gyűjtését és megtekintését is. Emellett megtekintheti a más eszközök, például a dotnet-trace által előre gyűjtött nyomkövetéseket is.
A Visual Studio profilkészítési eszközeinek többsége előre meghatározott eseménykészleteket használ, amelyek egy adott célt szolgálnak, például a CPU-használat vagy a foglalások elemzését. Ha testre szabott eseményekkel szeretne nyomkövetést gyűjteni, használja az Eseménynapló eszközt.
A Visual Studióban a Performance Profiler megnyitásához válassza az Alt+F2 lehetőséget.
Jelölje be az Eseménynapló jelölőnégyzetet.
A konfigurációs ablak megnyitásához válassza az Eseménynapló jobb oldalán található kis fogaskerék ikont.
A További szolgáltatók alatti táblázatban adjon hozzá egy sort minden konfigurálni kívánt szolgáltatóhoz. Ehhez kattintson az Engedélyezve jelölőnégyzetre, majd adja meg a szolgáltató nevét, a kulcsszavakat és a szintet. Nem kell megadnia a szolgáltató GUID azonosítóját; automatikusan ki lesz számítva.
A konfigurációs beállítások megerősítéséhez kattintson az OK gombra .
Válassza a Start gombot az alkalmazás futtatásának megkezdéséhez és a naplók gyűjtéséhez.
Válassza a Adatgyűjtés leállítása lehetőséget, vagy lépjen ki az alkalmazásból a naplók gyűjtésének leállításához és az összegyűjtött adatok megjelenítéséhez.
A Visual Studio megtekintheti a saját maga által gyűjtött nyomkövetéseket, vagy megtekintheti a más eszközökben gyűjtött nyomkövetéseket. Más eszközök nyomkövetéseinek megtekintéséhez használja aFájlmegnyitás> parancsot, és válasszon ki egy nyomkövetési fájlt a fájlválasztóban. A Visual Studio profilkészítője támogatja az .etl fájlokat (az ETW szabványos formátumát), a .nettrace fájlokat (az EventPipe szabványos formátumát) és a .diagsession fájlokat (a Visual Studio standard formátumát). A nyomkövetési fájlok Visual Studióban való használatával kapcsolatos információkért tekintse meg a Visual Studio dokumentációját.
Megjegyzés
A Visual Studio bizonyos eseményeket automatikusan gyűjt az ETW-ből vagy az EventPipe-ből, még akkor is, ha nincsenek explicit módon konfigurálva. Ha olyan eseményeket lát, amelyeket nem ismer fel a Szolgáltató neve vagy az Esemény neve oszlopban, és ki szeretné szűrni őket, a jobb oldali szűrőikonnal csak a megtekinteni kívánt eseményeket választhatja ki.
A PerfView egy teljesítményeszköz, amelyet a .NET csapata hozott létre, amely képes az ETW-nyomkövetések gyűjtésére és megtekintésére. A más eszközök által gyűjtött nyomkövetési fájlokat is megtekintheti különböző formátumokban. Ebben az oktatóanyagban összegyűjti a bemutató alkalmazás ETW-nyomkövetését, majd megvizsgálja az összegyűjtött eseményeket a PerfView eseménynaplójában.
Töltse le a PerfView-t a kiadások oldaláról. Ez az oktatóanyag a PerfView 2.0.76-os verziójával készült, de a legutóbbi verzióknak működnie kell.
Indítsa el a PerfView.exe rendszergazdai engedélyekkel.
Megjegyzés
Az ETW-nyomkövetési gyűjteményhez mindig rendszergazdai engedélyek szükségesek, de ha csak a PerfView-t használja egy már meglévő nyomkövetés megtekintéséhez, akkor nincs szükség speciális engedélyekre.
A Gyűjtemény menüben válassza a Futtatás lehetőséget. Ekkor megnyílik egy új párbeszédpanel, ahol megadhatja a bemutatóalkalmazás elérési útját.
Az összegyűjtött események konfigurálásához bontsa ki a párbeszédpanel alján található Speciális beállítások elemet. A További szolgáltatók szövegmezőbe írja be a korábban ismertetett hagyományos szöveges formátumot használó szolgáltatókat . Ebben az esetben a "Demo:1:4" kifejezést adja meg, ami azt jelenti, hogy az 1. kulcsszóbit (Startup
események) és a 4. részletesség (Informational
).
Az alkalmazás elindításához és a nyomkövetés gyűjtésének megkezdéséhez válassza a Parancs futtatása gombot. Amikor az alkalmazás kilép, a PerfViewData.etl nyomkövetés az aktuális könyvtárba lesz mentve.
A bal felső sarokban található főablak legördülő szövegmezőjében válassza ki a nyomkövetési fájlt tartalmazó könyvtárat. Ezután kattintson duplán a nyomkövetési fájlra az alábbi fanézetben.
Az Eseménymegjelenítő megjelenítéséhez kattintson duplán a nyomkövetési fájl alatti fanézetben megjelenő Események elemre.
A nyomkövetés összes eseménytípusa megjelenik a bal oldali listában. Kattintson duplán egy eseménytípusra (például Demo\AppStarted) a jobb oldali táblázatban található összes ilyen típusú esemény megjelenítéséhez.
A PerfView használatával kapcsolatos további információkért tekintse meg a PerfView videós oktatóanyagait.
A dotnet-trace egy platformfüggetlen parancssori eszköz, amely az EventPipe-nyomkövetés használatával képes nyomkövetéseket gyűjteni a .NET Core-alkalmazásokból. Nem támogatja a nyomkövetési adatok megtekintését, de az általa gyűjtött nyomkövetéseket más eszközök, például a PerfView vagy a Visual Studio is megtekinthetik. A dotnet-trace emellett támogatja az alapértelmezett .nettrace formátumú nyomkövetések más formátumokra való konvertálását is, például Chromium vagy Speedscope.
Töltse le és telepítse a dotnet-trace fájlt.
Futtassa a dotnet-trace collect parancsot a parancssorban:
E:\temp\EventSourceDemo\bin\Debug\net6.0>dotnet-trace collect --providers Demo:1:4 -- EventSourceDemo.exe
Ennek a következőhöz hasonló kimenetnek kell megjelennie:
E:\temp\EventSourceDemo\bin\Debug\net6.0> dotnet-trace collect --providers Demo:1:4 -- EventSourceDemo.exe
Provider Name Keywords Level Enabled By
Demo 0x0000000000000001 Informational(4) --providers
Launching: EventSourceDemo.exe
Process : E:\temp\EventSourceDemo\bin\Debug\net6.0\EventSourceDemo.exe
Output File : E:\temp\EventSourceDemo\bin\Debug\net6.0\EventSourceDemo.exe_20220317_021512.nettrace
[00:00:00:00] Recording trace 0.00 (B)
Press <Enter> or <Ctrl+C> to exit...
Trace completed.
A dotnet-trace a hagyományos szöveges formátumot használja a szolgáltató konfigurálásának leírásához az --providers
argumentumban. A nyomkövetés dotnet-trace használatával történő követésére vonatkozó további lehetőségekért tekintse meg a dotnet-trace dokumentációt.
System.Diagnostics.Tracing.EventListener egy .NET API, amely a folyamat során használható a által létrehozott System.Diagnostics.Tracing.EventSourceesemények visszahívásainak fogadására. Ezzel az API-val egyéni naplózási eszközöket hozhat létre, vagy elemezheti a memóriában lévő eseményeket anélkül, hogy szerializálni kellene őket.
A használatához EventListener
deklaráljon egy típust, amely a következőből EventListener
származik: , meghívja EnableEvents az eseményre való feliratkozáshoz bármely érdekes EseményForrásból, és felülbírálja a OnEventWrittenparancsot, amely akkor lesz meghívva, amikor új esemény érhető el. Gyakran hasznos felülbírálni OnEventSourceCreated , hogy mely EventSource-objektumok léteznek, de erre nincs szükség. Az alábbiakban egy példa EventListener
implementáció látható, amely az üzenetek fogadásakor a konzolon jelenik meg:
Adja hozzá ezt a kódot a bemutatóalkalmazáshoz.
class ConsoleWriterEventListener : EventListener
{
protected override void OnEventSourceCreated(EventSource eventSource)
{
if(eventSource.Name == "Demo")
{
EnableEvents(eventSource, EventLevel.Informational);
}
}
protected override void OnEventWritten(EventWrittenEventArgs eventData)
{
Console.WriteLine(eventData.TimeStamp + " " + eventData.EventName);
}
}
Módosítsa a metódust Main
az új figyelő egy példányának létrehozásához.
public static void Main(string[] args)
{
ConsoleWriterEventListener listener = new ConsoleWriterEventListener();
DemoEventSource.Log.AppStarted("Hello World!", 12);
DemoEventSource.Log.DebugMessage("Got here");
DemoEventSource.Log.DebugMessage("finishing startup");
DemoEventSource.Log.RequestStart(3);
DemoEventSource.Log.RequestStop(3);
}
Hozza létre és futtassa az alkalmazást. Korábban nem volt kimenete, de most az eseményeket a konzolra írja:
3/24/2022 9:23:35 AM AppStarted
3/24/2022 9:23:35 AM RequestStart
3/24/2022 9:23:35 AM RequestStop
.NET-visszajelzés
A(z) .NET egy nyílt forráskód projekt. Visszajelzés adásához válasszon egy hivatkozást:
esemény
AI-alkalmazások és -ügynökök létrehozása
márc. 17. 21 - márc. 21. 10
Csatlakozzon a meetup sorozathoz, hogy valós használati esetek alapján, skálázható AI-megoldásokat hozzon létre más fejlesztőkkel és szakértőkkel.
RegisztrációOktatás
Modul
Windows Server-eseménynaplók kezelése és figyelése - Training
Megtudhatja, hogy Eseménynapló hogyan biztosít kényelmes és akadálymentes helyet az események megfigyeléséhez. Gyorsan és kényelmesen elérheti az eseményinformációkat. Megtudhatja, hogyan értelmezheti az adatokat az eseménynaplóban.
Dokumentáció
Jól ismert eseményszolgáltatók a .NET-ben - .NET
Tekintse át a .NET-futtatókörnyezet és a tárak által közzétett szolgáltatókat és eseményeket.
Ismerje meg az EventPipe-et, és hogyan használhatja a .NET-alkalmazások nyomon követésére a teljesítményproblémák diagnosztizálásához.
dotnet-trace diagnosztikai eszköz – .NET CLI - .NET
Megtudhatja, hogyan telepítheti és használhatja a dotnet-trace parancssori eszközt egy futó folyamat .NET-nyomkövetéseinek a natív profiler nélküli gyűjtéséhez a .NET EventPipe használatával.