Skip to content

Commit e00250c

Browse files
authored
Merge pull request #4447 from bclothier/TraceAtInstall
Trace logging by default; change to None after successful run
2 parents d6bf85d + eb9353a commit e00250c

File tree

7 files changed

+38
-7
lines changed

7 files changed

+38
-7
lines changed

Rubberduck.Core/App.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,24 @@ private void UpdateLoggingLevel()
105105
LogLevelHelper.SetMinimumLogLevel(LogLevel.FromOrdinal(_config.UserSettings.GeneralSettings.MinimumLogLevel));
106106
}
107107

108+
/// <summary>
109+
/// Ensure that log level is changed to "none" after a successful
110+
/// run of Rubberduck for first time. By default, we ship with
111+
/// log level set to Trace (0) but once it's installed and has
112+
/// ran without problem, it should be set to None (6)
113+
/// </summary>
114+
private void UpdateLoggingLevelOnShutdown()
115+
{
116+
if (_config.UserSettings.GeneralSettings.UserEditedLogLevel ||
117+
_config.UserSettings.GeneralSettings.MinimumLogLevel != LogLevel.Trace.Ordinal)
118+
{
119+
return;
120+
}
121+
122+
_config.UserSettings.GeneralSettings.MinimumLogLevel = LogLevel.Off.Ordinal;
123+
_configService.SaveConfiguration(_config);
124+
}
125+
108126
public void Startup()
109127
{
110128
EnsureLogFolderPathExists();
@@ -131,6 +149,8 @@ public void Shutdown()
131149
{
132150
Debug.WriteLine("App calling Hooks.Detach.");
133151
_hooks.Detach();
152+
153+
UpdateLoggingLevelOnShutdown();
134154
}
135155
catch
136156
{

Rubberduck.Core/Properties/Settings.Designer.cs

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Rubberduck.Core/Properties/Settings.settings

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,8 @@
178178
&lt;IsSmartIndenterPrompted&gt;false&lt;/IsSmartIndenterPrompted&gt;
179179
&lt;IsAutoSaveEnabled&gt;false&lt;/IsAutoSaveEnabled&gt;
180180
&lt;AutoSavePeriod&gt;10&lt;/AutoSavePeriod&gt;
181-
&lt;MinimumLogLevel&gt;6&lt;/MinimumLogLevel&gt;
181+
&lt;UserEditedLogLevel&gt;false&lt;/UserEditedLogLevel&gt;
182+
&lt;MinimumLogLevel&gt;0&lt;/MinimumLogLevel&gt;
182183
&lt;EnableExperimentalFeatures /&gt;
183184
&lt;/GeneralSettings&gt;</Value>
184185
</Setting>

Rubberduck.Core/Rubberduck.Core.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,10 @@
123123
<AutoGen>True</AutoGen>
124124
<DesignTimeSharedInput>True</DesignTimeSharedInput>
125125
<DependentUpon>Settings.settings</DependentUpon>
126+
<DesignTime>True</DesignTime>
126127
</Compile>
127128
<None Include="Properties\Settings.settings">
128-
<Generator>PublicSettingsSingleFileGenerator</Generator>
129+
<Generator>SettingsSingleFileGenerator</Generator>
129130
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
130131
</None>
131132
</ItemGroup>

Rubberduck.Core/Settings/GeneralSettings.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public interface IGeneralSettings
1616
bool IsSmartIndenterPrompted { get; set; }
1717
bool IsAutoSaveEnabled { get; set; }
1818
int AutoSavePeriod { get; set; }
19+
bool UserEditedLogLevel { get; set; }
1920
int MinimumLogLevel { get; set; }
2021
List<ExperimentalFeatures> EnableExperimentalFeatures { get; set; }
2122
}
@@ -32,6 +33,8 @@ public class GeneralSettings : IGeneralSettings, IEquatable<GeneralSettings>
3233
public bool IsAutoSaveEnabled { get; set; }
3334
public int AutoSavePeriod { get; set; }
3435

36+
public bool UserEditedLogLevel { get; set; }
37+
3538
private int _logLevel;
3639
public int MinimumLogLevel
3740
{
@@ -73,6 +76,7 @@ public bool Equals(GeneralSettings other)
7376
IsSmartIndenterPrompted == other.IsSmartIndenterPrompted &&
7477
IsAutoSaveEnabled == other.IsAutoSaveEnabled &&
7578
AutoSavePeriod == other.AutoSavePeriod &&
79+
UserEditedLogLevel == other.UserEditedLogLevel &&
7680
MinimumLogLevel == other.MinimumLogLevel &&
7781
EnableExperimentalFeatures.All(a => other.EnableExperimentalFeatures.Contains(a)) &&
7882
EnableExperimentalFeatures.Count == other.EnableExperimentalFeatures.Count;

Rubberduck.Core/UI/Settings/GeneralSettingsViewModel.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ public DelimiterOptions Delimiter
200200

201201
public ObservableCollection<MinimumLogLevel> LogLevels { get; set; }
202202
private MinimumLogLevel _selectedLogLevel;
203+
private bool _userEditedLogLevel;
203204

204205
public MinimumLogLevel SelectedLogLevel
205206
{
@@ -208,6 +209,7 @@ public MinimumLogLevel SelectedLogLevel
208209
{
209210
if (!Equals(_selectedLogLevel, value))
210211
{
212+
_userEditedLogLevel = true;
211213
_selectedLogLevel = value;
212214
OnPropertyChanged();
213215
}
@@ -243,7 +245,8 @@ private Rubberduck.Settings.GeneralSettings GetCurrentGeneralSettings()
243245
IsSmartIndenterPrompted = _indenterPrompted,
244246
IsAutoSaveEnabled = AutoSaveEnabled,
245247
AutoSavePeriod = AutoSavePeriod,
246-
MinimumLogLevel = SelectedLogLevel.Ordinal,
248+
UserEditedLogLevel = _userEditedLogLevel,
249+
MinimumLogLevel = _selectedLogLevel.Ordinal,
247250
EnableExperimentalFeatures = ExperimentalFeatures
248251
};
249252
}
@@ -258,7 +261,8 @@ private void TransferSettingsToView(IGeneralSettings general, IHotkeySettings ho
258261
_indenterPrompted = general.IsSmartIndenterPrompted;
259262
AutoSaveEnabled = general.IsAutoSaveEnabled;
260263
AutoSavePeriod = general.AutoSavePeriod;
261-
SelectedLogLevel = LogLevels.First(l => l.Ordinal == general.MinimumLogLevel);
264+
_userEditedLogLevel = general.UserEditedLogLevel;
265+
_selectedLogLevel = LogLevels.First(l => l.Ordinal == general.MinimumLogLevel);
262266

263267
ExperimentalFeatures = _experimentalFeatureTypes
264268
.SelectMany(s => s.CustomAttributes.Where(a => a.ConstructorArguments.Any()).Select(a => (string)a.ConstructorArguments.First().Value))

Rubberduck.Core/app.config

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,8 @@
228228
<IsSmartIndenterPrompted>false</IsSmartIndenterPrompted>
229229
<IsAutoSaveEnabled>false</IsAutoSaveEnabled>
230230
<AutoSavePeriod>10</AutoSavePeriod>
231-
<MinimumLogLevel>6</MinimumLogLevel>
231+
<UserEditedLogLevel>false</UserEditedLogLevel>
232+
<MinimumLogLevel>0</MinimumLogLevel>
232233
<EnableExperimentalFeatures />
233234
</GeneralSettings>
234235
</value>

0 commit comments

Comments
 (0)