Jestem nowy na platformie Windows Phone. Czy jest coś dostępnego jak logcat w systemie Android dla okien do zbierania logów? Z góry dziękuję.Jak zbierać dzienniki aplikacji w systemie Windows Phone 8.1?
Odpowiedz
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).
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.
Czy mogę wiedzieć, gdzie zapisywany jest plik dziennika? Czy mogę skopiować to na komputer przy użyciu narzędzia izolowanego narzędzia do przechowywania? –
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. –
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? –