2014-11-21 39 views

risposta

6

Windows 8.1 ha introdotto nuove classi per semplificare la registrazione. Queste classi sono LoggingChannel, LoggingSession e others.

Ecco un esempio:

App.xaml.cs

LoggingSession logSession; 
LoggingChannel logChannel; 

public App() 
{ 
    this.InitializeComponent(); 
    this.UnhandledException += App_UnhandledException; 
} 

void App_UnhandledException(object sender, UnhandledExceptionEventArgs e) 
{ 
    logChannel.LogMessage("Unhandled exception: " + e.Message); 
    logSession.SaveToFileAsync(Windows.Storage.ApplicationData.Current.LocalFolder, "MainLog.log").AsTask().Wait(); 
} 

protected override void OnLaunched(LaunchActivatedEventArgs e) 
{ 
    logSession = new LoggingSession("MainLogSession"); 
    Resources["MainLogSession"] = logSession; 

    logChannel = new LoggingChannel("AppLogChannel"); 
    logSession.AddLoggingChannel(logChannel); 
} 

MainPage.xaml.cs

LoggingChannel logChannel; 

public MainPage() 
{ 
    this.InitializeComponent(); 

    var logSession = (LoggingSession)Application.Current.Resources["MainLogSession"]; 
    logChannel = new LoggingChannel("MainPageLogChannel"); 
    logSession.AddLoggingChannel(logChannel); 
    logChannel.LogMessage("MainPage ctor", LoggingLevel.Information); 
} 

ho altamente consiglia di guardare il keynote Making your Windows Store Apps More Reliable durante la conferenza del 2013, in cui Harry Pierson dimostra queste nuove API in maggiore dettaglio (incluso il caricamento del file di registro su un server back-end utilizzando un'attività in background che viene eseguita quando il telefono è collegato all'alimentazione CA).

+0

Posso sapere dove viene salvato il file di registro? Posso anche copiarlo sul desktop usando lo strumento di esplorazione di memoria isolato? –

+0

Puoi vedere nel mio codice App.xaml.cs che sto specificando che voglio il file di registro salvato nella cartella dati locale della mia app con il nome "MainLog.log", quindi sì, puoi specificare dove viene salvato. Dovresti essere in grado di utilizzare lo strumento di archiviazione isolato per copiare il file sul tuo PC. –

+0

Grazie per la risposta. Sono in grado di estrarre il file sul mio PC.Ma quel file di registro non è in formato leggibile (come alcuni caratteri indesiderati). C'è comunque la possibilità di convertirlo in un formato leggibile? –

0

È possibile utilizzare System.Diagnostics.Debug per visualizzare i registri sulla finestra di Visual Studio Console, ma non sarà possibile recuperarli in seguito poiché è visualizzato solo durante il debug.

Raccomando l'uso di MetroLog, un sistema di registrazione leggero progettato specificamente per le app Windows Store e Windows Phone.

È possibile installarlo tramite NuGet

Install-Package MetroLog 

Ecco un rapido esempio:

using MetroLog; 
using MetroLog.Targets; 

LogManagerFactory.DefaultConfiguration.AddTarget(LogLevel.Trace, LogLevel.Fatal, new FileStreamingTarget()); 
GlobalCrashHandler.Configure(); 

ILogger log = LogManagerFactory.DefaultLogManager.GetLogger<MainPage>(); 

log.Trace("This is a trace message."); 

è possibile trovare un tutorial che spiega come aggiungere sul vostro progetto a http://talkitbr.com/2015/06/11/adicionando-logs-em-universal-apps. Inoltre c'è una spiegazione per quanto riguarda il recupero di questi registri.

Problemi correlati