Files
elwig/Elwig/Windows/LogWindow.xaml.cs
Lorenz Stechauner 2ee0d56dcc
All checks were successful
Test / Run tests (push) Successful in 1m54s
Windows: Add MailLogWindow
2024-11-13 18:37:50 +01:00

46 lines
1.6 KiB
C#

using Elwig.Helpers;
using System.Diagnostics;
using System.Linq;
using System.Windows;
namespace Elwig.Windows {
public partial class LogWindow : Window {
public LogWindow() {
InitializeComponent();
WindowState = WindowState.Maximized;
}
private void Window_Loaded(object sender, RoutedEventArgs evt) {
var log = Utils.GetLogEntries();
EventList.ItemsSource = log
.Select(e => new {
Event = e,
Lines = e.Message.Split('\n').ToArray(),
})
.Select(e => new {
e.Event,
Exception = e.Lines.FirstOrDefault(l => l.StartsWith("Exception Info: "))?[16..].Trim().Split(':', 2),
Location = e.Lines.FirstOrDefault(l => l.StartsWith(" at Elwig."))?[5..].Trim(),
})
.Select(e => new {
e.Event,
e.Exception,
ExceptionName = e.Exception?[0].Trim(),
ExceptionMessage = e.Exception?.Length >= 2 ? e.Exception?[1].Trim() : null,
e.Location,
})
.OrderByDescending(e => e.Event.TimeGenerated)
.ToList();
EventList.SelectedIndex = 0;
}
private void EventList_SelectionChanged(object sender, RoutedEventArgs evt) {
var item = EventList.SelectedItem;
var t = item.GetType();
var p = t.GetProperty("Event")!;
EventData.Text = ((EventLogEntry)p.GetValue(item)!).Message;
}
}
}