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:44 +0100
commita8a457df1cfa03ebde0ceb79476aabab5ae2d340 (patch)
treec8ca9deaaa4ccf3bb4eab6dd73ff273326ffda73
parent6ab30541671561c647843e0a0a8d0a51208e4f42 (diff)
downloadtermsonic-a8a457df1cfa03ebde0ceb79476aabab5ae2d340.tar.gz
termsonic-a8a457df1cfa03ebde0ceb79476aabab5ae2d340.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 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 }