Skip to content

Commit bfdaf46

Browse files
SyncProLogViewer will now write a log file to %localappdata%\SyncPro\logs while running.
1 parent 9439049 commit bfdaf46

1 file changed

Lines changed: 28 additions & 9 deletions

File tree

SyncProLogViewer/ViewModels/MainWindowViewModel.cs

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
{
33
using System;
44
using System.Collections.ObjectModel;
5+
using System.IO;
56
using System.Threading.Tasks;
67
using System.Windows.Data;
78

@@ -11,6 +12,7 @@
1112
public class MainWindowViewModel : ViewModelBase, IDisposable
1213
{
1314
private TraceEventSession listener;
15+
private string logFilePath;
1416

1517
public ViewerConfiguration Config { get; }
1618

@@ -23,23 +25,26 @@ private void DynamicOnAll(TraceEvent traceEvent)
2325
return;
2426
}
2527

26-
App.DispatcherInvoke(() =>
28+
var logEntry = new LogEntry()
2729
{
28-
this.Entries.Add(new LogEntry()
29-
{
30-
Message = traceEvent.FormattedMessage,
31-
Timestamp = traceEvent.TimeStamp,
32-
Level = TraceEventLevelConverter(traceEvent.Level, traceEvent.Channel),
33-
ThreadId = traceEvent.ThreadID
34-
});
30+
Message = traceEvent.FormattedMessage,
31+
Timestamp = traceEvent.TimeStamp,
32+
Level = TraceEventLevelConverter(traceEvent.Level, traceEvent.Channel),
33+
ThreadId = traceEvent.ThreadID
34+
};
35+
36+
string line = LogEntry.Serialize(logEntry);
37+
File.AppendAllLines(this.logFilePath, new[] { line });
3538

39+
App.DispatcherInvoke(() =>
40+
{
41+
this.Entries.Add(logEntry);
3642
CollectionViewSource.GetDefaultView(this.Entries).MoveCurrentToLast();
3743
});
3844
}
3945

4046
private static string TraceEventLevelConverter(TraceEventLevel level, TraceEventChannel traceEventChannel)
4147
{
42-
4348
if (traceEventChannel == (TraceEventChannel) EventChannel.Debug
4449
&& level == TraceEventLevel.Verbose)
4550
{
@@ -81,6 +86,20 @@ public MainWindowViewModel()
8186
"SyncPro-Tracing"); // Get the unique ID for the eventSouce.
8287
this.listener.EnableProvider(eventSourceGuid);
8388

89+
var appDataDir = Path.Combine(
90+
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
91+
"SyncPro",
92+
"logs");
93+
94+
if (!Directory.Exists(appDataDir))
95+
{
96+
Directory.CreateDirectory(appDataDir);
97+
}
98+
99+
this.logFilePath = Path.Combine(
100+
appDataDir,
101+
string.Format("SyncPro-{0:yyyyMMdd-HHmmss}.log", DateTime.Now));
102+
84103
Task.Factory.StartNew(() => { this.listener.Source.Process(); });
85104
}
86105

0 commit comments

Comments
 (0)