aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Garrelou <simon.garrelou@gmail.com>2023-12-20 14:13:17 +0100
committerSimon Garrelou <simon.garrelou@gmail.com>2023-12-20 14:14:08 +0100
commit119f7140d269aa5f9c01faa9d83d2e73e6f1efb0 (patch)
treee28ad292f20afceb595452e939461305cc49c17f
parent15d3df5b10abbc11c65eff36682243e8ae8c0eb1 (diff)
downloadtermsonic-119f7140d269aa5f9c01faa9d83d2e73e6f1efb0.tar.gz
termsonic-119f7140d269aa5f9c01faa9d83d2e73e6f1efb0.zip
Add file-based error logging
-rw-r--r--.gitignore1
-rw-r--r--src/errors.go28
-rw-r--r--src/page_artists.go1
-rw-r--r--src/page_config.go2
-rw-r--r--src/page_playlists.go1
5 files changed, 33 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 02915e9..e72bd03 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
1launch.json 1launch.json
2/termsonic 2/termsonic
3termsonic.exe 3termsonic.exe
4errors.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 @@
1package src
2
3import (
4 "fmt"
5 "os"
6 "time"
7)
8
9var globalErrors = make(chan error, 100)
10
11func 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
26func 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 f67697c..747165b 100644
--- a/src/page_artists.go
+++ b/src/page_artists.go
@@ -127,6 +127,7 @@ func (a *app) loadAlbumInPanel(id string) error {
127 err := a.playQueue.Play() 127 err := a.playQueue.Play()
128 if err != nil { 128 if err != nil {
129 a.alert("Error: %v", err) 129 a.alert("Error: %v", err)
130 LogErrorf("starting playback of album '%s': %v", album.Name, err)
130 } 131 }
131 }) 132 })
132 } 133 }
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 }