2015-09-01 18 views
8

Sto tentando di creare un registro eventi per un'applicazione universale Windows. In precedenza avevamo System.Diagnostics EventLog per registrare eventi, ma non ho trovato nulla di simile sulla piattaforma per Windows 10 Universal Apps. È possibile creare registri per Windows 10 e questi registri possono essere scritti su un file per accedervi in ​​seguito?Registratore eventi in Windows 10 Universal Apps

Ho cercato molto, ma non ho trovato nulla.

risposta

8

FileLoggingSession

Dal Windows 8.1 ci sono FileLoggingSession e LoggingChannel classi del namespace Windows.Foundation.Diagnostics, in grado di eseguire la registrazione di file quando configurato per farlo. Puoi leggere di più nella versione ufficiale documentation.

inizializzazione, l'utilizzo e il recupero del file di registro può essere fatto come nel seguente frammento, naturalmente è necessario creare interfacce, single, ecc per renderlo utilizzabile:

// Initialization 
FileLoggingSession fileLoggingSession = new FileLoggingSession("session"); 
var loggingChannel = new LoggingChannel("channel"); 
fileLoggingSession.AddLoggingChannel(loggingChannel); 

// Log messages 
loggingChannel.LogMessage("error message", LoggingLevel.Error); 

// When file is needed 
var file = await fileLoggingSession.CloseAndSaveToFileAsync(); 

// Do anything with file 

LoggingSession

Proprio come FileLoggingSession scrive i registri su un file, ma la differenza principale è che FileLoggingSession scrive i registri immediatamente nel file, e LoggingSession no, ed è necessario richiedere manualmente la scrittura dei registri su un file con loMetodo. Dalla documentazione:

La classe FileLoggingSession invia i messaggi registrati ai file su disco man mano che vengono registrati. La classe FileLoggingSession utilizza la registrazione sequenziale, il che significa che tutti i messaggi vengono inviati a un file su disco e viene conservata una cronologia sequenziale dei messaggi. Questo è distinto dalla classe LoggingSession, che invia messaggi registrati su disco su richiesta, e ciò accade quando c'è un problema e la cronologia immediata dei messaggi in memoria è necessaria per l'analisi.

METROLOG

avete un altro alternative se poi non vorrai usare FileLoggingSession o LoggingSession classi. Una buona soluzione è MetroLog che ha un target FileStreamingTarget che rende molto semplice l'accesso a un'applicazione Windows/Phone.

Si crea il registratore quando ne avete bisogno, ad esempio, in una pagina:

public sealed partial class LogSamplePage : Win8Sample.Common.LayoutAwarePage 
{ 
    private ILogger Log = LogManagerFactory.DefaultLogManager.GetLogger<LogSamplePage>(); 
} 

quindi è possibile utilizzare nella pagina come questa:

// flat strings... 
if (this.Log.IsInfoEnabled) 
    this.Log.Info("I've been navigated to."); 

// formatting... 
if (this.Log.IsDebugEnabled) 
    this.Log.Debug("I can also format {0}.", "strings"); 

// errors... 
try 
{ 
    this.DoMagic(); 
} 
catch(Exception ex) 
{ 
    if (this.Log.IsWarnEnabled) 
     this.Log.Warn("You can also pass in exceptions.", ex); 
} 

MetroEventSource

La seconda soluzione è l'esempio di registrazione this nella galleria di esempi MSDN di Can Bilgin, in cui è disponibile lo MetroEventSource classe.È possibile registrare i messaggi, ad esempio un errore come questo:

MetroEventSource.Log.Error("Here is the error message"); 

Se si utilizza questo logger non dimenticate di inizializzare su Esegui applicazione, come descritto nel progetto di esempio.

+1

Ho letto la documentazione di FileLoggingSession e dice che FileLoggingSession accede immediatamente all'HardDisk. Tuttavia non vedo alcun campione per lo stesso. Sembra che dobbiamo creare un canale di registrazione, aggiungerlo a FileLoggingSession, accedere utilizzando questo canale di log. Infine, quando chiamiamo fileLoggingSession.closeAndSavetoFileAsync(), Scrive i log su File. La domanda è Come scrivere registri immediatamente su hardisk utilizzando FileLoggingSession? Perché potrei non essere in grado di chiamare closeAndSaveToFileAsync() se la mia app si arresta prima. Gentilmente aiuto. Grazie! –

Problemi correlati