diff options
author | Simon Garrelou <simon.garrelou@gmail.com> | 2023-12-20 14:13:17 +0100 |
---|---|---|
committer | Simon Garrelou <simon.garrelou@gmail.com> | 2023-12-20 14:14:44 +0100 |
commit | a8a457df1cfa03ebde0ceb79476aabab5ae2d340 (patch) | |
tree | c8ca9deaaa4ccf3bb4eab6dd73ff273326ffda73 | |
parent | 6ab30541671561c647843e0a0a8d0a51208e4f42 (diff) | |
download | termsonic-a8a457df1cfa03ebde0ceb79476aabab5ae2d340.tar.gz termsonic-a8a457df1cfa03ebde0ceb79476aabab5ae2d340.zip |
Add file-based error logging
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | src/errors.go | 28 | ||||
-rw-r--r-- | src/page_artists.go | 1 | ||||
-rw-r--r-- | src/page_config.go | 2 | ||||
-rw-r--r-- | src/page_playlists.go | 1 |
5 files changed, 33 insertions, 0 deletions
@@ -1,3 +1,4 @@ | |||
1 | launch.json | 1 | launch.json |
2 | /termsonic | 2 | /termsonic |
3 | termsonic.exe | 3 | termsonic.exe |
4 | errors.log \ No newline at end of file | ||
diff --git a/src/errors.go b/src/errors.go new file mode 100644 index 0000000..7fea064 --- /dev/null +++ b/src/errors.go | |||
@@ -0,0 +1,28 @@ | |||
1 | package src | ||
2 | |||
3 | import ( | ||
4 | "fmt" | ||
5 | "os" | ||
6 | "time" | ||
7 | ) | ||
8 | |||
9 | var globalErrors = make(chan error, 100) | ||
10 | |||
11 | func init() { | ||
12 | go func() { | ||
13 | f, err := os.OpenFile("errors.log", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0o664) | ||
14 | if err != nil { | ||
15 | panic(err) | ||
16 | } | ||
17 | defer f.Close() | ||
18 | |||
19 | for e := range globalErrors { | ||
20 | f.WriteString(fmt.Sprintf("%s: %v\n", time.Now(), e)) | ||
21 | f.Sync() | ||
22 | } | ||
23 | }() | ||
24 | } | ||
25 | |||
26 | func LogErrorf(format string, args ...any) { | ||
27 | globalErrors <- fmt.Errorf(format, args...) | ||
28 | } | ||
diff --git a/src/page_artists.go b/src/page_artists.go index faf1027..02d768a 100644 --- a/src/page_artists.go +++ b/src/page_artists.go | |||
@@ -130,6 +130,7 @@ func (a *app) loadAlbumInPanel(id string) error { | |||
130 | err := a.playQueue.Play() | 130 | err := a.playQueue.Play() |
131 | if err != nil { | 131 | if err != nil { |
132 | a.alert("Error: %v", err) | 132 | a.alert("Error: %v", err) |
133 | LogErrorf("starting playback of album '%s': %v", album.Name, err) | ||
133 | } | 134 | } |
134 | }) | 135 | }) |
135 | } | 136 | } |
diff --git a/src/page_config.go b/src/page_config.go index 31e93e4..faa3b97 100644 --- a/src/page_config.go +++ b/src/page_config.go | |||
@@ -47,11 +47,13 @@ func (a *app) configPage() *tview.Form { | |||
47 | 47 | ||
48 | if err := a.refreshArtists(); err != nil { | 48 | if err := a.refreshArtists(); err != nil { |
49 | a.alert("Error: %v", err) | 49 | a.alert("Error: %v", err) |
50 | LogErrorf("refreshing artists following Ctrl+R: %v", err) | ||
50 | return nil | 51 | return nil |
51 | } | 52 | } |
52 | 53 | ||
53 | if err := a.refreshPlaylists(); err != nil { | 54 | if err := a.refreshPlaylists(); err != nil { |
54 | a.alert("Error: %v", err) | 55 | a.alert("Error: %v", err) |
56 | LogErrorf("refreshing playlists following Ctrl+R: %v", err) | ||
55 | return nil | 57 | return nil |
56 | } | 58 | } |
57 | 59 | ||
diff --git a/src/page_playlists.go b/src/page_playlists.go index 25b35ba..1eaa624 100644 --- a/src/page_playlists.go +++ b/src/page_playlists.go | |||
@@ -89,6 +89,7 @@ func (a *app) loadPlaylist(id string) error { | |||
89 | 89 | ||
90 | if err := a.playQueue.Play(); err != nil { | 90 | if err := a.playQueue.Play(); err != nil { |
91 | a.alert("Error: %v", err) | 91 | a.alert("Error: %v", err) |
92 | LogErrorf("starting playback of playlist '%s': %v", a.currentPlaylist.Name, err) | ||
92 | } | 93 | } |
93 | }) | 94 | }) |
94 | } | 95 | } |