From a8a457df1cfa03ebde0ceb79476aabab5ae2d340 Mon Sep 17 00:00:00 2001 From: Simon Garrelou Date: Wed, 20 Dec 2023 14:13:17 +0100 Subject: Add file-based error logging --- .gitignore | 1 + src/errors.go | 28 ++++++++++++++++++++++++++++ src/page_artists.go | 1 + src/page_config.go | 2 ++ src/page_playlists.go | 1 + 5 files changed, 33 insertions(+) create mode 100644 src/errors.go diff --git a/.gitignore b/.gitignore index 02915e9..e72bd03 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ launch.json /termsonic termsonic.exe +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 @@ +package src + +import ( + "fmt" + "os" + "time" +) + +var globalErrors = make(chan error, 100) + +func init() { + go func() { + f, err := os.OpenFile("errors.log", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0o664) + if err != nil { + panic(err) + } + defer f.Close() + + for e := range globalErrors { + f.WriteString(fmt.Sprintf("%s: %v\n", time.Now(), e)) + f.Sync() + } + }() +} + +func LogErrorf(format string, args ...any) { + globalErrors <- fmt.Errorf(format, args...) +} 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 { err := a.playQueue.Play() if err != nil { a.alert("Error: %v", err) + LogErrorf("starting playback of album '%s': %v", album.Name, err) } }) } 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 { if err := a.refreshArtists(); err != nil { a.alert("Error: %v", err) + LogErrorf("refreshing artists following Ctrl+R: %v", err) return nil } if err := a.refreshPlaylists(); err != nil { a.alert("Error: %v", err) + LogErrorf("refreshing playlists following Ctrl+R: %v", err) return nil } 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 { if err := a.playQueue.Play(); err != nil { a.alert("Error: %v", err) + LogErrorf("starting playback of playlist '%s': %v", a.currentPlaylist.Name, err) } }) } -- cgit v1.2.3