FileLoggingSession Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt das Ziel der protokollierten Nachrichten von LoggingChannel-Instanzen dar.
public ref class FileLoggingSession sealed : IFileLoggingSession, IClosable
/// [Windows.Foundation.Metadata.Activatable(Windows.Foundation.Diagnostics.IFileLoggingSessionFactory, 65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class FileLoggingSession final : IFileLoggingSession, IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(Windows.Foundation.Diagnostics.IFileLoggingSessionFactory, 65536, "Windows.Foundation.UniversalApiContract")]
class FileLoggingSession final : IFileLoggingSession, IClosable
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Foundation.Diagnostics.IFileLoggingSessionFactory), 65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class FileLoggingSession : System.IDisposable, IFileLoggingSession
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Foundation.Diagnostics.IFileLoggingSessionFactory), 65536, "Windows.Foundation.UniversalApiContract")]
public sealed class FileLoggingSession : System.IDisposable, IFileLoggingSession
function FileLoggingSession(name)
Public NotInheritable Class FileLoggingSession
Implements IDisposable, IFileLoggingSession
- Vererbung
- Attribute
- Implementiert
Windows-Anforderungen
Gerätefamilie |
Windows 10 (eingeführt in 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)
|
Hinweise
Verwenden Sie die FileLoggingSession-Klasse , um Nachrichten und Daten kontinuierlich in einer Datei zu protokollieren, während Ihre App ausgeführt wird. Sie können die Protokolldateien mit dem Windows Performance Toolkit (WPT) und anderen Hilfsprogrammen wie tracerpt.exe anzeigen.
Fügen Sie LoggingChannel-Instanzen zu einer FileLoggingSession hinzu, und rufen Sie FileLoggingSession instance Methoden auf, um Kanäle zu entfernen, zu löschen und andere Vorgänge auszuführen. Die Anzahl der Kanäle ist derzeit nicht begrenzt.
Hinweis
In Windows Server 2012 R2 und Windows 8.1 ist jede App auf 4 aktive Kanäle beschränkt, und Kanäle müssen eindeutige Namen haben.
Die FileLoggingSession-Klasse sendet protokollierte Nachrichten an Datenträgerdateien, wenn ein Puffer gefüllt ist oder wenn der Benutzer CloseAndSaveToFileAsync aufruft. Die FileLoggingSession-Klasse verwendet die sequenzielle Protokollierung, was bedeutet, dass alle Nachrichten an eine Datenträgerdatei gesendet werden und ein sequenzieller Verlauf von Nachrichten beibehalten wird. Dies unterscheidet sich von der LoggingSession-Klasse , die bei Bedarf protokollierte Nachrichten an den Datenträger sendet, d. h. wenn die App ein Problem erkennt und die In-Memory-Nachrichten zur Analyse speichert.
Verwenden Sie die FileLoggingSession-Klasse , wenn Sie wissen, dass alle Nachrichten gespeichert werden müssen, in der Regel über einen langen Zeitraum, und wenn die App nicht mit bedarfsgesteuerten Sparschritten belastet werden kann. Wie die LoggingSession-Klasse werden LoggingChannel-Instanzen einem FileLoggingSession-instance hinzugefügt, und die FileLoggingSession-instance verfügt über Methoden zum Entfernen von Kanälen und Zum Löschen von Kanälen. FileLoggingSession-Instanzen werden mit einem Delegat für einen neuen Dateirückruf initialisiert, der die App benachrichtigt, wenn ein Protokolldateirollover aufgetreten ist. Das Feature ruft den Delegaten auf, wenn die aktuelle interne Protokolldatei kapazität erreicht hat und eine neue Datei für die fortlaufende sequenzielle Protokollierung erstellt wird. Der Delegatrückruf kann auch an Angehaltenen Grenzen oder bei der Beseitigung der FileLoggingSession aufgerufen werden.
Wenn das LogFileGenerated-Ereignis aufgerufen wird, empfängt die App eine StorageFile-Datei , die die jetzt geschlossene Protokolldatei darstellt. Die App kann die Protokolldatei auf anwendungsdefinierte Weise zur Verarbeitung weiterleiten. Danach setzt die Sitzung die Protokollierung bei einer neu erstellten und jetzt geöffneten aktuellen Protokolldatei fort. Wenn diese Protokolldatei die Kapazität erreicht, wird der Rückrufdelegat für die neue Datei erneut aufgerufen, und der Prozess wird wiederholt.
Wenn Sie mit der Protokollierung von Ereignissen fertig sind, rufen Sie CloseAndSaveToFileAsync auf, um die letzte Protokolldatei abzurufen, da die letzte Protokolldatei möglicherweise noch geöffnet ist, wenn sie noch keine Kapazität erreicht hat. Sie können auch CloseAndSaveToFileAsync verwenden, um die Sitzung zu schließen und Zugriff auf die letzte Protokolldatei zu erhalten. Beachten Sie, dass die CloseAndSaveToFileAsync-Methode null zurückgibt, wenn die letzte Protokolldatei leer war oder wenn alle Protokolldateien bereits von der LogFileGenerated-Methode gemeldet wurden.
Die Protokolldateien werden im Ordner ApplicationData\Logs erstellt.
Der Name jeder Protokolldatei basiert auf dem Namen der Sitzung und einem Index. Der Index wird jedes Mal zurückgesetzt, wenn eine neue Sitzung erstellt wird. Jedes Mal, wenn eine Protokolldatei die maximale Größe erreicht, wird sie geschlossen, der Index erhöht, und eine neue Protokolldatei wird mit dem neuen Index geöffnet. (Daher beginnt sie jedes Mal, wenn Sie eine App neu starten, mit dem Überschreiben der Protokolldateien, die vom vorherigen instance der App generiert wurden.)
Sie können einen Handler für das LogFileGenerated-Ereignis hinzufügen, damit Ihre App jedes Mal benachrichtigt wird, wenn eine Protokolldatei geschlossen wird.
Wenn Sie das LogFileGenerated-Ereignis oder die CloseAndSaveToFileAsync-Methode nicht verwenden, löscht die FileLoggingSession keine veralteten Protokolldateien (obwohl eine neue Sitzung möglicherweise Dateien überschreibt, die von einer vorherigen Sitzung generiert wurden). Ihre App ist dafür verantwortlich, die Protokolldateien nach Bedarf zu suchen und zu bereinigen.
Bevor eine Protokolldatei über das LogFileGenerated-Ereignis oder die CloseAndSaveToFileAsync-Methode für eine App bereitgestellt wird, wird sie in einen speziellen Protokolldateinamen umbenannt. Es wird immer derselbe Protokolldateiname verwendet, sodass neue Protokolle ältere Protokolle überschreiben. Auf diese Weise verhindern das LogFileGenerated-Ereignis und die CloseAndSaveToFileAsync-Methoden , dass veraltete Protokolldateien Speicherplatz im Ordner ApplicationData verschwenden.
FileLoggingSession schließt die aktuelle Protokolldatei und startet eine neue Protokolldatei, wenn die aktuelle Protokolldatei 256 KB erreicht.
Konstruktoren
FileLoggingSession(String) |
Initialisiert eine neue instance der FileLoggingSession-Klasse. |
Eigenschaften
Name |
Ruft den Namen der Protokollierungssitzung ab. |
Methoden
AddLoggingChannel(ILoggingChannel) |
Fügt der aktuellen Protokollierungssitzung einen Protokollierungskanal hinzu. |
AddLoggingChannel(ILoggingChannel, LoggingLevel) |
Fügt der aktuellen Protokollierungssitzung einen Protokollierungskanal hinzu. Der Protokollierungskanal akzeptiert nur Ereignisse, die eine Protokollierungsebene auf oder über der angegebenen Protokollierungsebene aufweisen. |
Close() |
Beendet die aktuelle Protokollierungssitzung. |
CloseAndSaveToFileAsync() |
Beendet die aktuelle Protokollierungssitzung und speichert sie in einer Datei. |
Dispose() |
Führt anwendungsspezifische Aufgaben durch, die mit der Freigabe, der Zurückgabe oder dem Zurücksetzen von nicht verwalteten Ressourcen zusammenhängen. |
RemoveLoggingChannel(ILoggingChannel) |
Entfernt den angegebenen Protokollierungskanal aus der aktuellen Protokollierungssitzung. |
Ereignisse
LogFileGenerated |
Wird ausgelöst, wenn eine Protokolldatei gespeichert wird. |