Skip to content

Commit 502f4ab

Browse files
committed
ILogger for Signal_Windows
Remove all occurences of Debug.WriteLine in favour of the ILogger interface, removed unused classes, stopped leaking personal information to the log, save log to \LocalCache\Signal-Windows.ui.log.
1 parent 457a2f5 commit 502f4ab

15 files changed

+296
-253
lines changed

Signal-Windows.sln

Lines changed: 48 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,48 @@
1-
Microsoft Visual Studio Solution File, Format Version 12.00
2-
# Visual Studio 15
3-
VisualStudioVersion = 15.0.27004.2002
4-
MinimumVisualStudioVersion = 10.0.40219.1
5-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Signal-Windows", "Signal-Windows\Signal-Windows.csproj", "{41736A64-5B66-44AF-879A-501192A46920}"
6-
EndProject
7-
Global
8-
GlobalSection(SolutionConfigurationPlatforms) = preSolution
9-
Debug|Any CPU = Debug|Any CPU
10-
Debug|ARM = Debug|ARM
11-
Debug|x64 = Debug|x64
12-
Debug|x86 = Debug|x86
13-
Release|Any CPU = Release|Any CPU
14-
Release|ARM = Release|ARM
15-
Release|x64 = Release|x64
16-
Release|x86 = Release|x86
17-
EndGlobalSection
18-
GlobalSection(ProjectConfigurationPlatforms) = postSolution
19-
{41736A64-5B66-44AF-879A-501192A46920}.Debug|Any CPU.ActiveCfg = Debug|x86
20-
{41736A64-5B66-44AF-879A-501192A46920}.Debug|ARM.ActiveCfg = Debug|ARM
21-
{41736A64-5B66-44AF-879A-501192A46920}.Debug|ARM.Build.0 = Debug|ARM
22-
{41736A64-5B66-44AF-879A-501192A46920}.Debug|ARM.Deploy.0 = Debug|ARM
23-
{41736A64-5B66-44AF-879A-501192A46920}.Debug|x64.ActiveCfg = Debug|x64
24-
{41736A64-5B66-44AF-879A-501192A46920}.Debug|x64.Build.0 = Debug|x64
25-
{41736A64-5B66-44AF-879A-501192A46920}.Debug|x64.Deploy.0 = Debug|x64
26-
{41736A64-5B66-44AF-879A-501192A46920}.Debug|x86.ActiveCfg = Debug|x86
27-
{41736A64-5B66-44AF-879A-501192A46920}.Debug|x86.Build.0 = Debug|x86
28-
{41736A64-5B66-44AF-879A-501192A46920}.Debug|x86.Deploy.0 = Debug|x86
29-
{41736A64-5B66-44AF-879A-501192A46920}.Release|Any CPU.ActiveCfg = Release|x86
30-
{41736A64-5B66-44AF-879A-501192A46920}.Release|ARM.ActiveCfg = Release|ARM
31-
{41736A64-5B66-44AF-879A-501192A46920}.Release|ARM.Build.0 = Release|ARM
32-
{41736A64-5B66-44AF-879A-501192A46920}.Release|ARM.Deploy.0 = Release|ARM
33-
{41736A64-5B66-44AF-879A-501192A46920}.Release|x64.ActiveCfg = Release|x64
34-
{41736A64-5B66-44AF-879A-501192A46920}.Release|x64.Build.0 = Release|x64
35-
{41736A64-5B66-44AF-879A-501192A46920}.Release|x64.Deploy.0 = Release|x64
36-
{41736A64-5B66-44AF-879A-501192A46920}.Release|x86.ActiveCfg = Release|x86
37-
{41736A64-5B66-44AF-879A-501192A46920}.Release|x86.Build.0 = Release|x86
38-
{41736A64-5B66-44AF-879A-501192A46920}.Release|x86.Deploy.0 = Release|x86
39-
EndGlobalSection
40-
GlobalSection(SolutionProperties) = preSolution
41-
HideSolutionNode = FALSE
42-
EndGlobalSection
43-
GlobalSection(ExtensibilityGlobals) = postSolution
44-
SolutionGuid = {6C980B4F-4E4C-422E-A06F-1FB4A091E952}
45-
EndGlobalSection
46-
EndGlobal
1+
Microsoft Visual Studio Solution File, Format Version 12.00
2+
# Visual Studio 15
3+
VisualStudioVersion = 15.0.27004.2006
4+
MinimumVisualStudioVersion = 10.0.40219.1
5+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Signal-Windows", "Signal-Windows\Signal-Windows.csproj", "{41736A64-5B66-44AF-879A-501192A46920}"
6+
EndProject
7+
Global
8+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
9+
Debug|Any CPU = Debug|Any CPU
10+
Debug|ARM = Debug|ARM
11+
Debug|x64 = Debug|x64
12+
Debug|x86 = Debug|x86
13+
Release|Any CPU = Release|Any CPU
14+
Release|ARM = Release|ARM
15+
Release|x64 = Release|x64
16+
Release|x86 = Release|x86
17+
EndGlobalSection
18+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
19+
{41736A64-5B66-44AF-879A-501192A46920}.Debug|Any CPU.ActiveCfg = Debug|x86
20+
{41736A64-5B66-44AF-879A-501192A46920}.Debug|Any CPU.Build.0 = Debug|x86
21+
{41736A64-5B66-44AF-879A-501192A46920}.Debug|Any CPU.Deploy.0 = Debug|x86
22+
{41736A64-5B66-44AF-879A-501192A46920}.Debug|ARM.ActiveCfg = Debug|ARM
23+
{41736A64-5B66-44AF-879A-501192A46920}.Debug|ARM.Build.0 = Debug|ARM
24+
{41736A64-5B66-44AF-879A-501192A46920}.Debug|ARM.Deploy.0 = Debug|ARM
25+
{41736A64-5B66-44AF-879A-501192A46920}.Debug|x64.ActiveCfg = Debug|x64
26+
{41736A64-5B66-44AF-879A-501192A46920}.Debug|x64.Build.0 = Debug|x64
27+
{41736A64-5B66-44AF-879A-501192A46920}.Debug|x64.Deploy.0 = Debug|x64
28+
{41736A64-5B66-44AF-879A-501192A46920}.Debug|x86.ActiveCfg = Debug|x86
29+
{41736A64-5B66-44AF-879A-501192A46920}.Debug|x86.Build.0 = Debug|x86
30+
{41736A64-5B66-44AF-879A-501192A46920}.Debug|x86.Deploy.0 = Debug|x86
31+
{41736A64-5B66-44AF-879A-501192A46920}.Release|Any CPU.ActiveCfg = Release|x86
32+
{41736A64-5B66-44AF-879A-501192A46920}.Release|ARM.ActiveCfg = Release|ARM
33+
{41736A64-5B66-44AF-879A-501192A46920}.Release|ARM.Build.0 = Release|ARM
34+
{41736A64-5B66-44AF-879A-501192A46920}.Release|ARM.Deploy.0 = Release|ARM
35+
{41736A64-5B66-44AF-879A-501192A46920}.Release|x64.ActiveCfg = Release|x64
36+
{41736A64-5B66-44AF-879A-501192A46920}.Release|x64.Build.0 = Release|x64
37+
{41736A64-5B66-44AF-879A-501192A46920}.Release|x64.Deploy.0 = Release|x64
38+
{41736A64-5B66-44AF-879A-501192A46920}.Release|x86.ActiveCfg = Release|x86
39+
{41736A64-5B66-44AF-879A-501192A46920}.Release|x86.Build.0 = Release|x86
40+
{41736A64-5B66-44AF-879A-501192A46920}.Release|x86.Deploy.0 = Release|x86
41+
EndGlobalSection
42+
GlobalSection(SolutionProperties) = preSolution
43+
HideSolutionNode = FALSE
44+
EndGlobalSection
45+
GlobalSection(ExtensibilityGlobals) = postSolution
46+
SolutionGuid = {6C980B4F-4E4C-422E-A06F-1FB4A091E952}
47+
EndGlobalSection
48+
EndGlobal

Signal-Windows/App.xaml.cs

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,10 @@ namespace Signal_Windows
2525
/// </summary>
2626
sealed partial class App : Application
2727
{
28+
private readonly ILogger Logger = LibsignalLogging.CreateLogger<App>();
2829
public static string URL = "https://textsecure-service.whispersystems.org";
2930
public static SignalServiceUrl[] ServiceUrls = new SignalServiceUrl[] { new SignalServiceUrl(URL, null) };
30-
public static StorageFolder LocalFolder = ApplicationData.Current.LocalFolder;
31+
public static StorageFolder LocalCacheFolder = ApplicationData.Current.LocalCacheFolder;
3132
public static ViewModelLocator ViewModels = (ViewModelLocator)Current.Resources["Locator"];
3233
public static SignalStore Store;
3334
public static bool MainPageActive = false;
@@ -42,10 +43,11 @@ sealed partial class App : Application
4243
/// </summary>
4344
public App()
4445
{
45-
LibsignalLogging.LoggerFactory.AddProvider(new SignalLoggerProvider());
46+
SignalLogging.SetupLogging(true);
4647
this.InitializeComponent();
4748
this.Suspending += OnSuspending;
48-
this.Resuming += App_Resuming;
49+
this.Resuming += OnResuming;
50+
this.UnhandledException += OnUnhandledException;
4951
try
5052
{
5153
Init = Task.Run(() =>
@@ -57,11 +59,18 @@ public App()
5759
}
5860
catch (Exception e)
5961
{
60-
Debug.WriteLine(e.Message);
61-
Debug.WriteLine(e.StackTrace);
62+
var line = new StackTrace(e, true).GetFrames()[0].GetFileLineNumber();
63+
Logger.LogError("App() failed in line {0}: {1}\n{2}", line, e.Message, e.StackTrace);
6264
}
6365
}
6466

67+
private void OnUnhandledException(object sender, UnhandledExceptionEventArgs ex)
68+
{
69+
Exception e = ex.Exception;
70+
var frame = new StackTrace(e, true).GetFrames()[0];
71+
Logger.LogError("UnhandledException occured in {0}/{1}: {2}\n{3}", frame.GetFileName(), frame.GetFileLineNumber(), e.Message, e.StackTrace);
72+
}
73+
6574
/// <summary>
6675
/// Wird aufgerufen, wenn die Anwendung durch den Endbenutzer normal gestartet wird. Weitere Einstiegspunkte
6776
/// werden z. B. verwendet, wenn die Anwendung gestartet wird, um eine bestimmte Datei zu öffnen.
@@ -88,7 +97,7 @@ protected override async void OnActivated(IActivatedEventArgs args)
8897
/// <returns></returns>
8998
private async Task OnLaunchedOrActivated(IActivatedEventArgs e, bool launched = true)
9099
{
91-
Debug.WriteLine("Signal-Windows " + LocalFolder.Path.ToString());
100+
Logger.LogDebug(LocalCacheFolder.Path);
92101
Window.Current.Activated += Current_Activated;
93102
WindowActive = true;
94103
Frame rootFrame = Window.Current.Content as Frame;
@@ -197,21 +206,21 @@ private async void OnSuspending(object sender, SuspendingEventArgs e)
197206
await ViewModels.MainPageInstance.Shutdown();
198207
}
199208
}
200-
Debug.WriteLine("shutdown successful");
209+
Logger.LogInformation("OnSuspending() shutdown successful");
201210
//TODO: Anwendungszustand speichern und alle Hintergrundaktivitäten beenden
202211
deferral.Complete();
203212
}
204213

205-
private async void App_Resuming(object sender, object e)
214+
private async void OnResuming(object sender, object e)
206215
{
207-
Debug.WriteLine("Resuming app");
216+
Logger.LogInformation("OnResuming()");
208217
if (ViewModels.MainPageInstance != null)
209218
{
210219
await ViewModels.MainPageInstance.Init();
211220
}
212221
else
213222
{
214-
Debug.WriteLine("We can't resume");
223+
Logger.LogError("OnResuming() failed");
215224
}
216225
}
217226
}

Signal-Windows/Controls/VirtualizedMessagesCollection.cs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11

2+
using libsignalservice;
3+
using Microsoft.Extensions.Logging;
24
using Signal_Windows.Models;
35
using Signal_Windows.Storage;
46
using System;
@@ -29,7 +31,8 @@ public class SignalUnreadMarker
2931
}
3032

3133
public class VirtualizedCollection : IList, INotifyCollectionChanged
32-
{
34+
{
35+
private readonly ILogger Logger = LibsignalLogging.CreateLogger<VirtualizedCollection>();
3336
private const int PAGE_SIZE = 50;
3437
public event NotifyCollectionChangedEventHandler CollectionChanged;
3538
private Dictionary<int, IList<SignalMessageContainer>> Cache = new Dictionary<int, IList<SignalMessageContainer>>();
@@ -89,8 +92,8 @@ private SignalMessageContainer Get(int index)
8992
int inpageIndex = index % PAGE_SIZE;
9093
int pageIndex = GetPageIndex(index);
9194
if (!Cache.ContainsKey(pageIndex))
92-
{
93-
Debug.WriteLine($"cache miss {pageIndex}");
95+
{
96+
Logger.LogTrace("Get() cache miss ({0})", pageIndex);
9497
Cache[pageIndex] = SignalDBContext.GetMessagesLocked(Conversation, pageIndex * PAGE_SIZE, PAGE_SIZE);
9598
}
9699
var page = Cache[pageIndex];
@@ -138,15 +141,15 @@ public int Add(object value, bool forcedScroll)
138141
}
139142
var message = value as SignalMessageContainer;
140143
int inpageIndex = message.Index % PAGE_SIZE;
141-
int pageIndex = GetPageIndex(message.Index);
142-
Debug.WriteLine($"VirtualizedCollection.Add Id={message.Message.Id} Index={message.Index} PageIndex={pageIndex} InpageIndex={inpageIndex} ");
144+
int pageIndex = GetPageIndex(message.Index);
145+
Logger.LogTrace("Add() Id={0} Index={1} PageIndex={2} InpageIndex={3}", message.Message.Id, message.Index, pageIndex, inpageIndex);
143146
if (!Cache.ContainsKey(pageIndex))
144147
{
145148
Cache[pageIndex] = SignalDBContext.GetMessagesLocked(Conversation, pageIndex * PAGE_SIZE, PAGE_SIZE);
146149
}
147150
Cache[pageIndex].Insert(inpageIndex, message);
148-
int virtualIndex = GetVirtualIndex(message.Index);
149-
Debug.WriteLine($"NotifyCollectionChangedAction.Add index={message.Index} virtualIndex={virtualIndex}");
151+
int virtualIndex = GetVirtualIndex(message.Index);
152+
Logger.LogTrace("Add() Index={0} VirtualIndex={1}", message.Index, virtualIndex);
150153
CollectionChanged?.Invoke(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, message, virtualIndex));
151154
return message.Index;
152155
}

Signal-Windows/Logging/LoggerProvider.cs

Lines changed: 0 additions & 75 deletions
This file was deleted.

0 commit comments

Comments
 (0)