2014-11-21 11 views

Odpowiedz

6

Windows 8.1 wprowadził nowe klasy w celu uproszczenia logowania. Klasy te to: LoggingChannel, LoggingSession i others.

Oto przykład:

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); 
} 

I wysoce zalecamy zapoznanie się z hasłem Making your Windows Store Apps More Reliable podczas konferencji budowania 2013, w której Harry Pierson demonstruje bardziej szczegółowo nowe API (w tym załadowanie pliku dziennika na serwer zaplecza za pomocą zadania w tle, które zostanie wykonane po podłączeniu telefonu do zasilania sieciowego).

+0

Czy mogę wiedzieć, gdzie zapisywany jest plik dziennika? Czy mogę skopiować to na komputer przy użyciu narzędzia izolowanego narzędzia do przechowywania? –

+0

Możesz zobaczyć w moim kodzie App.xaml.cs, że określam, że chcę, aby plik dziennika zapisany w folderze danych lokalnych mojej aplikacji o nazwie "MainLog.log", więc tak, możesz określić, gdzie zostanie zapisany. Powinieneś być w stanie użyć izolowanego narzędzia do przechowywania, aby skopiować plik na swój komputer. –

+0

Dziękuję za odpowiedź. Mogę pobrać plik na mój komputer.Ale plik dziennika nie jest w formacie czytelnym (jak niektóre znaki-śmieci). Czy mimo to można go przekonwertować na format czytelny? –

0

Możesz użyć System.Diagnostics.Debug, aby wyświetlić dzienniki w oknie konsoli programu Visual Studio, ale nie będzie można ich później zebrać, ponieważ są one wyświetlane tylko podczas debugowania.

Polecam korzystanie z MetroLog, lekkiego systemu rejestrowania zaprojektowanego specjalnie dla aplikacji Windows Store i Windows Phone.

Można go zainstalować używając Nuget

Install-Package MetroLog 

Oto krótki przykład:

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."); 

można znaleźć tutorial wyjaśniający jak dodać je do projektu w http://talkitbr.com/2015/06/11/adicionando-logs-em-universal-apps. Istnieje również wyjaśnienie dotyczące pobierania tych dzienników.

Powiązane problemy