FileLoggingSession Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Rappresenta la destinazione dei messaggi registrati dalle istanze di LoggingChannel .
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
- Ereditarietà
- Attributi
- Implementazioni
Requisiti Windows
Famiglia di dispositivi |
Windows 10 (è stato introdotto in 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)
|
Commenti
Usare la classe FileLoggingSession per registrare i messaggi e i dati in un file in modo continuo durante l'esecuzione dell'app. È possibile visualizzare i file di log usando Windows Performance Toolkit (WPT) e altre utilità come tracerpt.exe.
Aggiungere istanze di LoggingChannel a un FileLoggingSession e chiamare i metodi di istanza di FileLoggingSession per rimuovere canali, eliminare ed eseguire altre operazioni. Il numero di canali non è attualmente limitato.
Nota
In Windows Server 2012 R2 e Windows 8.1, ogni app è limitata a 4 canali attivi e i canali devono avere nomi univoci.
La classe FileLoggingSession invia messaggi registrati ai file di disco quando viene riempito un buffer o quando l'utente chiama CloseAndSaveToFileAsync. La classe FileLoggingSession usa la registrazione sequenziale, il che significa che tutti i messaggi vengono inviati a un file disco e viene mantenuta una cronologia sequenziale dei messaggi. Questo è distinto dalla classe LoggingSession , che invia messaggi registrati a disco su richiesta, ad esempio quando l'app rileva un problema e salva i messaggi in memoria per l'analisi.
Usare la classe FileLoggingSession quando si sa che tutti i messaggi devono essere salvati, in genere in un periodo di tempo lungo e quando l'app non può essere usata con i passaggi di salvataggio su richiesta. Come la classe LoggingSession, le istanze di LoggingChannel vengono aggiunte a un'istanza di FileLoggingSession e l'istanza di FileLoggingSession include metodi per rimuovere i canali e eliminare. Le istanze di FileLoggingSession vengono inizializzate con un delegato a un nuovo callback di file, che notifica all'app quando si è verificato il rollover di un file di log. La funzionalità richiama il delegato quando il file di log interno corrente ha raggiunto la capacità e viene creato un nuovo file per la registrazione sequenziale continua. Il callback delegato può essere chiamato anche ai limiti di sospensione o quando fileLoggingSession viene eliminato.
Quando viene richiamato l'evento LogFileGenerated , l'app riceve un file di archiviazione che rappresenta il file di log chiuso. L'app può inoltrare il file di log per l'elaborazione in modo definito dall'applicazione. Dopo questa operazione, la sessione continua la registrazione a un file di log corrente appena creato e ora aperto. Quando questo file di log raggiunge la capacità, il delegato di callback viene richiamato di nuovo per il nuovo file e il processo viene ripetuto.
Al termine della registrazione degli eventi, chiamare CloseAndSaveToFileAsync per ottenere l'ultimo file di log poiché l'ultimo file di log potrebbe essere ancora aperto se non è ancora stato raggiunto la capacità. È anche possibile usare CloseAndSaveToFileAsync per chiudere la sessione e ottenere l'accesso all'ultimo file di log. Si noti che se l'ultimo file di log è vuoto o se tutti i file di log sono già stati segnalati dal metodo LogFileGenerated , il metodo CloseAndSaveToFileAsync restituirà Null.
I file di log vengono creati nella cartella ApplicationData\Logs .
Il nome di ogni file di log si basa sul nome della sessione più un indice. L'indice viene reimpostato ogni volta che viene creata una nuova sessione. Ogni volta che un file di log raggiunge le dimensioni massime, viene chiuso, l'indice viene incrementato e viene aperto un nuovo file di log usando il nuovo indice. Di conseguenza, ogni volta che si riavvia un'app, inizierà a sovrascrivere i file di log generati dall'istanza precedente dell'app.
È possibile aggiungere un gestore per l'evento LogFileGenerated in modo che l'app venga notificata ogni volta che viene chiuso un file di log.
Se non si usa l'evento LogFileGenerated o il metodo CloseAndSaveToFileAsync , FileLoggingSession non eliminerà i file di log non aggiornati(anche se una nuova sessione potrebbe sovrascrivere i file generati da una sessione precedente). L'app è responsabile dell'individuazione e della pulizia dei file di log in base alle esigenze.
Prima di fornire un file di log a un'app tramite l'evento LogFileGenerated o il metodo CloseAndSaveToFileAsync , viene rinominato in un nome di file di log speciale. Lo stesso nome del file di log viene sempre usato, quindi i nuovi log sovrascriveranno i log meno recenti. In questo modo, l'evento LogFileGenerated e i metodi CloseAndSaveToFileAsync consentono di evitare che i file di log non aggiornati sprechessero spazio nella cartella ApplicationData.
FileLoggingSession chiude il file di log corrente e avvia un nuovo file di log quando il file di log corrente raggiunge 256 KB.
Costruttori
FileLoggingSession(String) |
Inizializza una nuova istanza della classe FileLoggingSession . |
Proprietà
Name |
Ottiene il nome della sessione di registrazione. |
Metodi
AddLoggingChannel(ILoggingChannel) |
Aggiunge un canale di registrazione alla sessione di registrazione corrente. |
AddLoggingChannel(ILoggingChannel, LoggingLevel) |
Aggiunge un canale di registrazione alla sessione di registrazione corrente. Il canale di registrazione accetta solo eventi con un livello di registrazione superiore o superiore al livello di registrazione specificato. |
Close() |
Termina la sessione di registrazione corrente. |
CloseAndSaveToFileAsync() |
Termina la sessione di registrazione corrente e la salva in un file. |
Dispose() |
Esegue attività definite dall'applicazione, come rilasciare o reimpostare risorse non gestite. |
RemoveLoggingChannel(ILoggingChannel) |
Rimuove il canale di registrazione specificato dalla sessione di registrazione corrente. |
Eventi
LogFileGenerated |
Generato quando viene salvato un file di log. |