Skip to content

Commit 6aa857e

Browse files
Add rudimentarry logging support with a setting to choose the level (currently defaulting to off)
1 parent 3fc7c16 commit 6aa857e

File tree

7 files changed

+122
-2
lines changed

7 files changed

+122
-2
lines changed

Lib/Launchpad/Config/AppConfig.ahk

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161

6262
RebuildExistingLaunchers {
6363
get => this.GetBooleanValue("RebuildExistingLaunchers", true)
64-
set => this.SetIniValue("RebuildExistingLaunchers", value)
64+
set => this.SetBooleanValue("RebuildExistingLaunchers", value)
6565
}
6666

6767
CreateIndividualDirs {
@@ -94,6 +94,11 @@
9494
set => this.SetBooleanValue("FlushCacheOnExit", value)
9595
}
9696

97+
LoggingLevel {
98+
get => this.GetIniValue("LoggingLevel") || "None"
99+
set => this.SetIniValue("LoggingLevel", value)
100+
}
101+
97102
__New(app, defaultTempDir, defaultAppDataDir) {
98103
InvalidParameterException.CheckTypes("ValidateLaunchersOp", "defaultTempDir", defaultTempDir, "", "defaultAppDataDir", defaultAppDataDir, "")
99104
InvalidParameterException.CheckEmpty("ValidateLaunchersOp", "defaultTempDir", defaultTempDir, "defaultAppDataDir", defaultAppDataDir)

Lib/Launchpad/Launchpad.ahk

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,11 @@
8282
set => this.blizzardProductDbObj := value
8383
}
8484

85+
Logger {
86+
get => this.loggerServiceObj
87+
set => this.loggerServiceObj := value
88+
}
89+
8590
__New(appName, appDir) {
8691
InvalidParameterException.CheckTypes("Launchpad", "appName", appName, "", "appDir", appDir, "")
8792
this.appName := appName
@@ -90,13 +95,16 @@
9095
DirCreate(this.tmpDir)
9196
DirCreate(this.appDataDir)
9297

93-
idGen := UuidGenerator.new()
98+
9499
config := AppConfig.new(this, this.tmpDir, this.appDataDir)
100+
idGen := UuidGenerator.new()
95101
appStateObj := LaunchpadAppState.new(this.appDataDir . "\State.json")
96102
eventManagerObj := EventManager.new()
97103

98104
this.idGen := idGen
99105
this.appConfigObj := config
106+
107+
this.loggerServiceObj := LoggerService.new(FileLogger.new(A_ScriptDir . "\log.txt", config.LoggingLevel, 5))
100108
this.appStateObj := appStateObj
101109
this.blizzardProductDbObj := BlizzardProductDb.new(this)
102110
this.eventManagerObj := eventManagerObj

Lib/Launchpad/Window/SettingsWindow.ahk

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
class SettingsWindow extends LaunchpadGuiBase {
22
availableThemes := Map()
3+
logLevels := ["None", "Error", "Warning", "Info", "Debug"]
34

45
__New(app, windowKey := "", owner := "", parent := "") {
56
this.availableThemes := app.Themes.GetAvailableThemes(true)
@@ -61,6 +62,11 @@
6162
this.AddHeading("Cache Settings")
6263
this.AddConfigCheckBox("Flush cache on exit", "FlushCacheOnExit")
6364

65+
this.AddHeading("Logging Level")
66+
chosen := this.GetItemIndex(this.logLevels, this.app.Config.LoggingLevel)
67+
ctl := this.guiObj.AddDDL("vLoggingLevel xs y+m Choose" . chosen . " w" . this.windowSettings["contentWidth"], this.logLevels)
68+
ctl.OnEvent("Change", "OnLoggingLevelChange")
69+
6470
tabs.UseTab()
6571

6672
closeW := 100
@@ -194,4 +200,9 @@
194200
this.app.Config.ThemeName := this.availableThemes[ctl.Value]
195201
this.app.Themes.LoadMainTheme()
196202
}
203+
204+
OnLoggingLevelChange(ctl, info) {
205+
this.guiObj.Submit(false)
206+
this.app.Config.LoggingLevel := ctl.Text
207+
}
197208
}

Lib/Shared/Includes.ahk

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@
5050
#Include E:\Tools\Launchpad\Lib\Shared\Launcher\SimpleLauncher.ahk
5151
#Include E:\Tools\Launchpad\Lib\Shared\LayeredData\LayeredDataBase.ahk
5252
#Include E:\Tools\Launchpad\Lib\Shared\LayeredData\LayeredEntityData.ahk
53+
#Include E:\Tools\Launchpad\Lib\Shared\Logger\FileLogger.ahk
54+
#Include E:\Tools\Launchpad\Lib\Shared\Logger\LoggerBase.ahk
5355
#Include E:\Tools\Launchpad\Lib\Shared\Notifier\NotifierBase.ahk
5456
#Include E:\Tools\Launchpad\Lib\Shared\Notifier\ToastNotifier.ahk
5557
#Include E:\Tools\Launchpad\Lib\Shared\OpError\BasicOpError.ahk
@@ -60,6 +62,7 @@
6062
#Include E:\Tools\Launchpad\Lib\Shared\Service\ComponentServiceBase.ahk
6163
#Include E:\Tools\Launchpad\Lib\Shared\Service\DataSourceManager.ahk
6264
#Include E:\Tools\Launchpad\Lib\Shared\Service\EventManager.ahk
65+
#Include E:\Tools\Launchpad\Lib\Shared\Service\LoggerService.ahk
6366
#Include E:\Tools\Launchpad\Lib\Shared\Service\ServiceBase.ahk
6467
#Include E:\Tools\Launchpad\Lib\Shared\Theme\JsonTheme.ahk
6568
#Include E:\Tools\Launchpad\Lib\Shared\Theme\ThemeBase.ahk

Lib/Shared/Logger/FileLogger.ahk

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
class FileLogger extends LoggerBase {
2+
path := ""
3+
loggingLevel := ""
4+
levels := ["None", "Debug", "Info", "Warning", "Error"]
5+
6+
__New(path, loggingLevel := "", autoTruncate := false) {
7+
this.path := path
8+
9+
super.__New(loggingLevel)
10+
11+
if (autoTruncate) {
12+
this.autoTruncate := autoTruncate
13+
this.Truncate(autoTruncate)
14+
}
15+
}
16+
17+
Truncate(truncateSize) {
18+
if (truncateSize and this.path != "" and FileExist(this.path)) {
19+
size := FileGetSize(this.path, "M")
20+
21+
if (size >= truncateSize) {
22+
FileDelete(this.path)
23+
}
24+
}
25+
}
26+
27+
Log(message, level := "Info") {
28+
if super.Log(message, level) {
29+
FileAppend("[" . FormatTime() . "] - [" . level . "] - " . message . "`n", this.path)
30+
}
31+
}
32+
}

Lib/Shared/Logger/LoggerBase.ahk

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
class LoggerBase {
2+
loggingLevel := ""
3+
4+
__New(loggingLevel := "") {
5+
if (loggingLevel == "") {
6+
loggingLevel := "Error"
7+
}
8+
9+
this.loggingLevel := loggingLevel
10+
}
11+
12+
Log(message, level := "info") {
13+
shouldContinue := false
14+
15+
minLevel := 1
16+
reqLevel := 1
17+
18+
for index, loggingLevel in this.levels {
19+
if (this.loggingLevel == loggingLevel) {
20+
minLevel := index
21+
break
22+
}
23+
}
24+
25+
for index, loggingLevel in this.levels {
26+
if (loggingLevel == level) {
27+
reqLevel := index
28+
break
29+
}
30+
}
31+
32+
return (reqLevel > 1 and minLevel > 1 and reqLevel >= minLevel)
33+
}
34+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class LoggerService {
2+
logger := ""
3+
4+
__New(logger) {
5+
this.logger := logger
6+
}
7+
8+
Log(message, level := "info") {
9+
this.logger.write(message, level)
10+
}
11+
12+
Debug(message) {
13+
this.Log(message, "debug")
14+
}
15+
16+
Info(message) {
17+
this.Log(message, "info")
18+
}
19+
20+
Warning(message) {
21+
this.Log(message, "warning")
22+
}
23+
24+
Error(message) {
25+
this.log(message, "error")
26+
}
27+
}

0 commit comments

Comments
 (0)