From 2000534e372b6304eb9ed7e78ae8908f0036d7c6 Mon Sep 17 00:00:00 2001 From: advplyr Date: Sun, 20 Apr 2025 10:06:52 -0500 Subject: [PATCH 1/6] Update logs to mask server address, add share txt file button --- pages/logs.vue | 88 ++++++++++++++++++++++++++++------ plugins/capacitor/AbsLogger.js | 4 +- strings/en-us.json | 2 + 3 files changed, 78 insertions(+), 16 deletions(-) diff --git a/pages/logs.vue b/pages/logs.vue index ded86767..fa8370d1 100644 --- a/pages/logs.vue +++ b/pages/logs.vue @@ -1,52 +1,110 @@ - + From fe921fd5b1d4616f4b4ea99d5a5f881d93f3175e Mon Sep 17 00:00:00 2001 From: advplyr Date: Sun, 20 Apr 2025 12:36:27 -0500 Subject: [PATCH 4/6] Update AbsLogger to have a tag with logs --- .../audiobookshelf/app/managers/DbManager.kt | 2 +- .../app/media/MediaProgressSyncer.kt | 16 ++++----- .../app/player/PlayerNotificationService.kt | 8 ++--- .../app/plugins/AbsAudioPlayer.kt | 2 +- .../audiobookshelf/app/plugins/AbsDatabase.kt | 6 ++-- .../audiobookshelf/app/plugins/AbsLogger.kt | 15 +++++---- .../audiobookshelf/app/server/ApiHandler.kt | 26 +++++++-------- components/app/AudioPlayerContainer.vue | 2 +- layouts/default.vue | 33 +++++++++---------- pages/logs.vue | 11 ++++--- plugins/capacitor/AbsLogger.js | 11 ++++--- 11 files changed, 69 insertions(+), 63 deletions(-) diff --git a/android/app/src/main/java/com/audiobookshelf/app/managers/DbManager.kt b/android/app/src/main/java/com/audiobookshelf/app/managers/DbManager.kt index cabf52a9..b2f8293e 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/managers/DbManager.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/managers/DbManager.kt @@ -317,7 +317,7 @@ class DbManager { } } if (logsRemoved > 0) { - AbsLogger.info("[DbManager] cleanLogs: Removed $logsRemoved logs older than $numberOfHoursToKeep hours") + AbsLogger.info("DbManager", "cleanLogs: Removed $logsRemoved logs older than $numberOfHoursToKeep hours") } } } diff --git a/android/app/src/main/java/com/audiobookshelf/app/media/MediaProgressSyncer.kt b/android/app/src/main/java/com/audiobookshelf/app/media/MediaProgressSyncer.kt index d7662640..1aeed0a0 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/media/MediaProgressSyncer.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/media/MediaProgressSyncer.kt @@ -262,7 +262,7 @@ class MediaProgressSyncer( tag, "Sync local device current serverConnectionConfigId=${DeviceManager.serverConnectionConfig?.id}" ) - AbsLogger.info("[MediaProgressSyncer] sync: Saved local progress (title: \"$currentDisplayTitle\") (currentTime: $currentTime) (session id: ${it.id})") + AbsLogger.info("MediaProgressSyncer", "sync: Saved local progress (title: \"$currentDisplayTitle\") (currentTime: $currentTime) (session id: ${it.id})") // Local library item is linked to a server library item // Send sync to server also if connected to this server and local item belongs to this @@ -278,29 +278,29 @@ class MediaProgressSyncer( failedSyncs = 0 playerNotificationService.alertSyncSuccess() DeviceManager.dbManager.removePlaybackSession(it.id) // Remove session from db - AbsLogger.info("[MediaProgressSyncer] sync: Successfully synced local progress (title: \"$currentDisplayTitle\") (currentTime: $currentTime) (session id: ${it.id})") + AbsLogger.info("MediaProgressSyncer", "sync: Successfully synced local progress (title: \"$currentDisplayTitle\") (currentTime: $currentTime) (session id: ${it.id})") } else { failedSyncs++ if (failedSyncs == 2) { playerNotificationService.alertSyncFailing() // Show alert in client failedSyncs = 0 } - AbsLogger.error("[MediaProgressSyncer] sync: Local progress sync failed (count: $failedSyncs) (title: \"$currentDisplayTitle\") (currentTime: $currentTime) (session id: ${it.id}) (${DeviceManager.serverConnectionConfigName})") + AbsLogger.error("MediaProgressSyncer", "sync: Local progress sync failed (count: $failedSyncs) (title: \"$currentDisplayTitle\") (currentTime: $currentTime) (session id: ${it.id}) (${DeviceManager.serverConnectionConfigName})") } cb(SyncResult(true, syncSuccess, errorMsg)) } } else { - AbsLogger.info("[MediaProgressSyncer] sync: Not sending local progress to server (title: \"$currentDisplayTitle\") (currentTime: $currentTime) (session id: ${it.id}) (hasNetworkConnection: $hasNetworkConnection) (isConnectedToSameServer: $isConnectedToSameServer)") + AbsLogger.info("MediaProgressSyncer", "sync: Not sending local progress to server (title: \"$currentDisplayTitle\") (currentTime: $currentTime) (session id: ${it.id}) (hasNetworkConnection: $hasNetworkConnection) (isConnectedToSameServer: $isConnectedToSameServer)") cb(SyncResult(false, null, null)) } } } else if (hasNetworkConnection && shouldSyncServer) { - AbsLogger.info("[MediaProgressSyncer] sync: Sending progress sync to server (title: \"$currentDisplayTitle\") (currentTime: $currentTime) (session id: ${currentSessionId}) (${DeviceManager.serverConnectionConfigName})") + AbsLogger.info("MediaProgressSyncer", "sync: Sending progress sync to server (title: \"$currentDisplayTitle\") (currentTime: $currentTime) (session id: ${currentSessionId}) (${DeviceManager.serverConnectionConfigName})") apiHandler.sendProgressSync(currentSessionId, syncData) { syncSuccess, errorMsg -> if (syncSuccess) { - AbsLogger.info("[MediaProgressSyncer] sync: Successfully synced progress (title: \"$currentDisplayTitle\") (currentTime: $currentTime) (session id: ${currentSessionId}) (${DeviceManager.serverConnectionConfigName})") + AbsLogger.info("MediaProgressSyncer", "sync: Successfully synced progress (title: \"$currentDisplayTitle\") (currentTime: $currentTime) (session id: ${currentSessionId}) (${DeviceManager.serverConnectionConfigName})") failedSyncs = 0 playerNotificationService.alertSyncSuccess() @@ -312,12 +312,12 @@ class MediaProgressSyncer( playerNotificationService.alertSyncFailing() // Show alert in client failedSyncs = 0 } - AbsLogger.error("[MediaProgressSyncer] sync: Progress sync failed (count: $failedSyncs) (title: \"$currentDisplayTitle\") (currentTime: $currentTime) (session id: $currentSessionId) (${DeviceManager.serverConnectionConfigName})") + AbsLogger.error("MediaProgressSyncer", "sync: Progress sync failed (count: $failedSyncs) (title: \"$currentDisplayTitle\") (currentTime: $currentTime) (session id: $currentSessionId) (${DeviceManager.serverConnectionConfigName})") } cb(SyncResult(true, syncSuccess, errorMsg)) } } else { - AbsLogger.info("[MediaProgressSyncer] sync: Not sending progress to server (title: \"$currentDisplayTitle\") (currentTime: $currentTime) (session id: $currentSessionId) (${DeviceManager.serverConnectionConfigName}) (hasNetworkConnection: $hasNetworkConnection)") + AbsLogger.info("MediaProgressSyncer", "sync: Not sending progress to server (title: \"$currentDisplayTitle\") (currentTime: $currentTime) (session id: $currentSessionId) (${DeviceManager.serverConnectionConfigName}) (hasNetworkConnection: $hasNetworkConnection)") cb(SyncResult(false, null, null)) } } diff --git a/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt b/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt index 4e3b0009..6cfc9cc1 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt @@ -453,7 +453,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { playbackSession ) // Save playback session to use when app is closed - AbsLogger.info("[PlayerNotificationService] preparePlayer: Started playback session for item ${currentPlaybackSession?.mediaItemId}. MediaPlayer ${currentPlaybackSession?.mediaPlayer}") + AbsLogger.info("PlayerNotificationService", "preparePlayer: Started playback session for item ${currentPlaybackSession?.mediaItemId}. MediaPlayer ${currentPlaybackSession?.mediaPlayer}") // Notify client clientEventEmitter?.onPlaybackSession(playbackSession) @@ -470,7 +470,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { val mediaSource: MediaSource if (playbackSession.isLocal) { - AbsLogger.info("[PlayerNotificationService] preparePlayer: Playing local item ${currentPlaybackSession?.mediaItemId}.") + AbsLogger.info("PlayerNotificationService", "preparePlayer: Playing local item ${currentPlaybackSession?.mediaItemId}.") val dataSourceFactory = DefaultDataSource.Factory(ctx) val extractorsFactory = DefaultExtractorsFactory() @@ -484,7 +484,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { ProgressiveMediaSource.Factory(dataSourceFactory, extractorsFactory) .createMediaSource(mediaItems[0]) } else if (!playbackSession.isHLS) { - AbsLogger.info("[PlayerNotificationService] preparePlayer: Direct playing item ${currentPlaybackSession?.mediaItemId}.") + AbsLogger.info("PlayerNotificationService", "preparePlayer: Direct playing item ${currentPlaybackSession?.mediaItemId}.") val dataSourceFactory = DefaultHttpDataSource.Factory() val extractorsFactory = DefaultExtractorsFactory() @@ -499,7 +499,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { ProgressiveMediaSource.Factory(dataSourceFactory, extractorsFactory) .createMediaSource(mediaItems[0]) } else { - AbsLogger.info("[PlayerNotificationService] preparePlayer: Playing HLS stream of item ${currentPlaybackSession?.mediaItemId}.") + AbsLogger.info("PlayerNotificationService", "preparePlayer: Playing HLS stream of item ${currentPlaybackSession?.mediaItemId}.") val dataSourceFactory = DefaultHttpDataSource.Factory() dataSourceFactory.setUserAgent(channelId) dataSourceFactory.setDefaultRequestProperties( diff --git a/android/app/src/main/java/com/audiobookshelf/app/plugins/AbsAudioPlayer.kt b/android/app/src/main/java/com/audiobookshelf/app/plugins/AbsAudioPlayer.kt index 57fe56e1..79a460d1 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/plugins/AbsAudioPlayer.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/plugins/AbsAudioPlayer.kt @@ -181,7 +181,7 @@ class AbsAudioPlayer : Plugin() { val playbackRate = call.getFloat("playbackRate",1f) ?: 1f val startTimeOverride = call.getDouble("startTime") - AbsLogger.info("[AbsAudioPlayer] prepareLibraryItem: lid=$libraryItemId, startTimeOverride=$startTimeOverride, playbackRate=$playbackRate") + AbsLogger.info("AbsAudioPlayer", "prepareLibraryItem: lid=$libraryItemId, startTimeOverride=$startTimeOverride, playbackRate=$playbackRate") if (libraryItemId.isEmpty()) { Log.e(tag, "Invalid call to play library item no library item id") diff --git a/android/app/src/main/java/com/audiobookshelf/app/plugins/AbsDatabase.kt b/android/app/src/main/java/com/audiobookshelf/app/plugins/AbsDatabase.kt index 0da3a6b9..bcf0e34d 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/plugins/AbsDatabase.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/plugins/AbsDatabase.kt @@ -221,7 +221,7 @@ class AbsDatabase : Plugin() { @PluginMethod fun syncLocalSessionsWithServer(call:PluginCall) { if (DeviceManager.serverConnectionConfig == null) { - AbsLogger.error("[AbsDatabase] syncLocalSessionsWithServer: not connected to server") + AbsLogger.error("AbsDatabase", "syncLocalSessionsWithServer: not connected to server") return call.resolve() } @@ -233,7 +233,7 @@ class AbsDatabase : Plugin() { if (!success) { call.resolve(JSObject("{\"error\":\"$errorMsg\"}")) } else { - AbsLogger.info("[AbsDatabase] syncLocalSessionsWithServer: Finished sending local playback sessions to server. Removing ${savedSessions.size} saved sessions.") + AbsLogger.info("AbsDatabase", "syncLocalSessionsWithServer: Finished sending local playback sessions to server. Removing ${savedSessions.size} saved sessions.") // Remove all local sessions savedSessions.forEach { DeviceManager.dbManager.removePlaybackSession(it.id) @@ -242,7 +242,7 @@ class AbsDatabase : Plugin() { } } } else { - AbsLogger.info("[AbsDatabase] syncLocalSessionsWithServer: No saved local playback sessions to send to server.") + AbsLogger.info("AbsDatabase", "syncLocalSessionsWithServer: No saved local playback sessions to send to server.") call.resolve() } } diff --git a/android/app/src/main/java/com/audiobookshelf/app/plugins/AbsLogger.kt b/android/app/src/main/java/com/audiobookshelf/app/plugins/AbsLogger.kt index ade3de47..cd52ddc3 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/plugins/AbsLogger.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/plugins/AbsLogger.kt @@ -13,6 +13,7 @@ import java.util.UUID data class AbsLog( var id:String, + var tag:String, var level:String, var message:String, var timestamp:Long @@ -29,27 +30,29 @@ class AbsLogger : Plugin() { } companion object { - fun info(message:String) { + fun info(tag:String, message:String) { Log.i("AbsLogger", message) - DeviceManager.dbManager.saveLog(AbsLog(id = UUID.randomUUID().toString(), level = "info", message, timestamp = System.currentTimeMillis())) + DeviceManager.dbManager.saveLog(AbsLog(id = UUID.randomUUID().toString(), tag, level = "info", message, timestamp = System.currentTimeMillis())) } - fun error(message:String) { + fun error(tag:String, message:String) { Log.e("AbsLogger", message) - DeviceManager.dbManager.saveLog(AbsLog(id = UUID.randomUUID().toString(), level = "error", message, timestamp = System.currentTimeMillis())) + DeviceManager.dbManager.saveLog(AbsLog(id = UUID.randomUUID().toString(), tag, level = "error", message, timestamp = System.currentTimeMillis())) } } @PluginMethod fun info(call: PluginCall) { val msg = call.getString("message") ?: return call.reject("No message") - info(msg) + val tag = call.getString("tag") ?: "" + info(tag, msg) call.resolve() } @PluginMethod fun error(call: PluginCall) { val msg = call.getString("message") ?: return call.reject("No message") - error(msg) + val tag = call.getString("tag") ?: "" + error(tag, msg) call.resolve() } diff --git a/android/app/src/main/java/com/audiobookshelf/app/server/ApiHandler.kt b/android/app/src/main/java/com/audiobookshelf/app/server/ApiHandler.kt index 1e236860..65a4e71d 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/server/ApiHandler.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/server/ApiHandler.kt @@ -469,11 +469,11 @@ class ApiHandler(var ctx:Context) { val deviceInfo = DeviceInfo(deviceId, Build.MANUFACTURER, Build.MODEL, Build.VERSION.SDK_INT, BuildConfig.VERSION_NAME) val payload = JSObject(jacksonMapper.writeValueAsString(LocalSessionsSyncRequestPayload(playbackSessions, deviceInfo))) - AbsLogger.info("[ApiHandler] sendSyncLocalSessions: Sending ${playbackSessions.size} saved local playback sessions to server (${DeviceManager.serverConnectionConfigName})") + AbsLogger.info("ApiHandler", "sendSyncLocalSessions: Sending ${playbackSessions.size} saved local playback sessions to server (${DeviceManager.serverConnectionConfigName})") postRequest("/api/session/local-all", payload, null) { if (!it.getString("error").isNullOrEmpty()) { - AbsLogger.error("[ApiHandler] sendSyncLocalSessions: Failed to sync local sessions. (${it.getString("error")})") + AbsLogger.error("ApiHandler", "sendSyncLocalSessions: Failed to sync local sessions. (${it.getString("error")})") cb(false, it.getString("error")) } else { val response = jacksonMapper.readValue(it.toString()) @@ -485,11 +485,11 @@ class ApiHandler(var ctx:Context) { val syncResult = SyncResult(true, true, "Progress synced on server") MediaEventManager.saveEvent(session, syncResult) - AbsLogger.info("[ApiHandler] sendSyncLocalSessions: Synced session \"${session.displayTitle}\" with server, server progress was updated for item ${session.mediaItemId}") + AbsLogger.info("ApiHandler", "sendSyncLocalSessions: Synced session \"${session.displayTitle}\" with server, server progress was updated for item ${session.mediaItemId}") } else if (!localSessionSyncResult.success) { - AbsLogger.error("[ApiHandler] sendSyncLocalSessions: Failed to sync session \"${session.displayTitle}\" with server. Error: ${localSessionSyncResult.error}") + AbsLogger.error("ApiHandler", "sendSyncLocalSessions: Failed to sync session \"${session.displayTitle}\" with server. Error: ${localSessionSyncResult.error}") } else { - AbsLogger.info("[ApiHandler] sendSyncLocalSessions: Synced session \"${session.displayTitle}\" with server. Server progress was up-to-date for item ${session.mediaItemId}") + AbsLogger.info("ApiHandler", "sendSyncLocalSessions: Synced session \"${session.displayTitle}\" with server. Server progress was up-to-date for item ${session.mediaItemId}") } } } @@ -499,20 +499,20 @@ class ApiHandler(var ctx:Context) { } fun syncLocalMediaProgressForUser(cb: () -> Unit) { - AbsLogger.info("[ApiHandler] syncLocalMediaProgressForUser: Server connection ${DeviceManager.serverConnectionConfigName}") + AbsLogger.info("ApiHandler", "[ApiHandler] syncLocalMediaProgressForUser: Server connection ${DeviceManager.serverConnectionConfigName}") // Get all local media progress for this server val allLocalMediaProgress = DeviceManager.dbManager.getAllLocalMediaProgress().filter { it.serverConnectionConfigId == DeviceManager.serverConnectionConfigId } if (allLocalMediaProgress.isEmpty()) { - AbsLogger.info("[ApiHandler] syncLocalMediaProgressForUser: No local media progress to sync") + AbsLogger.info("ApiHandler", "[ApiHandler] syncLocalMediaProgressForUser: No local media progress to sync") return cb() } - AbsLogger.info("[ApiHandler] syncLocalMediaProgressForUser: Found ${allLocalMediaProgress.size} local media progress") + AbsLogger.info("ApiHandler", "syncLocalMediaProgressForUser: Found ${allLocalMediaProgress.size} local media progress") getCurrentUser { user -> if (user == null) { - AbsLogger.error("[ApiHandler] syncLocalMediaProgressForUser: Failed to load user from server (${DeviceManager.serverConnectionConfigName})") + AbsLogger.error("ApiHandler", "syncLocalMediaProgressForUser: Failed to load user from server (${DeviceManager.serverConnectionConfigName})") } else { var numLocalMediaProgressUptToDate = 0 var numLocalMediaProgressUpdated = 0 @@ -522,21 +522,21 @@ class ApiHandler(var ctx:Context) { // Get matching local media progress allLocalMediaProgress.find { it.isMatch(mediaProgress) }?.let { localMediaProgress -> if (mediaProgress.lastUpdate > localMediaProgress.lastUpdate) { - AbsLogger.info("[ApiHandler] syncLocalMediaProgressForUser: Server progress for item \"${mediaProgress.mediaItemId}\" is more recent than local. Local progress last updated ${localMediaProgress.lastUpdate}, server progress last updated ${mediaProgress.lastUpdate}. Updating local current time ${localMediaProgress.currentTime} to ${mediaProgress.currentTime}") + AbsLogger.info("ApiHandler", "[ApiHandler] syncLocalMediaProgressForUser: Server progress for item \"${mediaProgress.mediaItemId}\" is more recent than local. Local progress last updated ${localMediaProgress.lastUpdate}, server progress last updated ${mediaProgress.lastUpdate}. Updating local current time ${localMediaProgress.currentTime} to ${mediaProgress.currentTime}") localMediaProgress.updateFromServerMediaProgress(mediaProgress) MediaEventManager.syncEvent(mediaProgress, "Sync on server connection") DeviceManager.dbManager.saveLocalMediaProgress(localMediaProgress) numLocalMediaProgressUpdated++ } else if (localMediaProgress.lastUpdate > mediaProgress.lastUpdate && localMediaProgress.ebookLocation != null && localMediaProgress.ebookLocation != mediaProgress.ebookLocation) { // Patch ebook progress to server - AbsLogger.info("[ApiHandler] syncLocalMediaProgressForUser: Local progress for ebook item \"${mediaProgress.mediaItemId}\" is more recent than server progress. Local progress last updated ${localMediaProgress.lastUpdate}, server progress last updated ${mediaProgress.lastUpdate}. Sending server request to update ebook progress from ${mediaProgress.ebookProgress} to ${localMediaProgress.ebookProgress}") + AbsLogger.info("ApiHandler", "syncLocalMediaProgressForUser: Local progress for ebook item \"${mediaProgress.mediaItemId}\" is more recent than server progress. Local progress last updated ${localMediaProgress.lastUpdate}, server progress last updated ${mediaProgress.lastUpdate}. Sending server request to update ebook progress from ${mediaProgress.ebookProgress} to ${localMediaProgress.ebookProgress}") val endpoint = "/api/me/progress/${localMediaProgress.libraryItemId}" val updatePayload = JSObject() updatePayload.put("ebookLocation", localMediaProgress.ebookLocation) updatePayload.put("ebookProgress", localMediaProgress.ebookProgress) updatePayload.put("lastUpdate", localMediaProgress.lastUpdate) patchRequest(endpoint,updatePayload) { - AbsLogger.info("[ApiHandler] syncLocalMediaProgressForUser: Successfully updated server ebook progress for item item \"${mediaProgress.mediaItemId}\"") + AbsLogger.info("ApiHandler", "syncLocalMediaProgressForUser: Successfully updated server ebook progress for item item \"${mediaProgress.mediaItemId}\"") } } else { numLocalMediaProgressUptToDate++ @@ -544,7 +544,7 @@ class ApiHandler(var ctx:Context) { } } - AbsLogger.info("[ApiHandler] syncLocalMediaProgressForUser: Finishing syncing local media progress with server. $numLocalMediaProgressUptToDate up-to-date, $numLocalMediaProgressUpdated updated") + AbsLogger.info("ApiHandler", "syncLocalMediaProgressForUser: Finishing syncing local media progress with server. $numLocalMediaProgressUptToDate up-to-date, $numLocalMediaProgressUpdated updated") } cb() } diff --git a/components/app/AudioPlayerContainer.vue b/components/app/AudioPlayerContainer.vue index 6afa3477..958fc968 100644 --- a/components/app/AudioPlayerContainer.vue +++ b/components/app/AudioPlayerContainer.vue @@ -190,7 +190,7 @@ export default { }) }, async playLibraryItem(payload) { - await AbsLogger.info({ message: `[AudioPlayerContainer] playLibraryItem: Received play request for library item ${payload.libraryItemId} ${payload.episodeId ? `episode ${payload.episodeId}` : ''}` }) + await AbsLogger.info({ tag: 'AudioPlayerContainer', message: `playLibraryItem: Received play request for library item ${payload.libraryItemId} ${payload.episodeId ? `episode ${payload.episodeId}` : ''}` }) const libraryItemId = payload.libraryItemId const episodeId = payload.episodeId const startTime = payload.startTime diff --git a/layouts/default.vue b/layouts/default.vue index e37f6a85..dff6e82a 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -118,7 +118,7 @@ export default { console.warn('[default] attemptConnection') if (!this.networkConnected) { console.warn('[default] No network connection') - AbsLogger.info({ message: '[default] attemptConnection: No network connection' }) + AbsLogger.info({ tag: 'default', message: 'attemptConnection: No network connection' }) return } if (this.attemptingConnection) { @@ -139,14 +139,14 @@ export default { if (!serverConfig) { // No last server config set this.attemptingConnection = false - AbsLogger.info({ message: `[default] attemptConnection: No last server config set` }) + AbsLogger.info({ tag: 'default', message: 'attemptConnection: No last server config set' }) return } - AbsLogger.info({ message: `[default] attemptConnection: Got server config, attempt authorize (${serverConfig.name})` }) + AbsLogger.info({ tag: 'default', message: `attemptConnection: Got server config, attempt authorize (${serverConfig.name})` }) const authRes = await this.postRequest(`${serverConfig.address}/api/authorize`, null, { Authorization: `Bearer ${serverConfig.token}` }, 6000).catch((error) => { - AbsLogger.error({ message: `[default] attemptConnection: Server auth failed (${serverConfig.name})` }) + AbsLogger.error({ tag: 'default', message: `attemptConnection: Server auth failed (${serverConfig.name})` }) return false }) if (!authRes) { @@ -172,7 +172,7 @@ export default { this.$socket.connect(serverConnectionConfig.address, serverConnectionConfig.token) - AbsLogger.info({ message: `[default] attemptConnection: Successful connection to last saved server config (${serverConnectionConfig.name})` }) + AbsLogger.info({ tag: 'default', message: `attemptConnection: Successful connection to last saved server config (${serverConnectionConfig.name})` }) await this.initLibraries() this.attemptingConnection = false }, @@ -193,7 +193,7 @@ export default { this.inittingLibraries = true await this.$store.dispatch('libraries/load') - AbsLogger.info({ message: `[default] initLibraries loading library ${this.currentLibraryName}` }) + AbsLogger.info({ tag: 'default', message: `initLibraries loading library ${this.currentLibraryName}` }) await this.$store.dispatch('libraries/fetch', this.currentLibraryId) this.$eventBus.$emit('library-changed') this.inittingLibraries = false @@ -204,7 +204,7 @@ export default { return } - AbsLogger.info({ message: '[default] Calling syncLocalSessions' }) + AbsLogger.info({ tag: 'default', message: 'Calling syncLocalSessions' }) const response = await this.$db.syncLocalSessionsWithServer(isFirstSync) if (response?.error) { console.error('[default] Failed to sync local sessions', response.error) @@ -221,12 +221,12 @@ export default { }, async userMediaProgressUpdated(payload) { const prog = payload.data // MediaProgress - await AbsLogger.info({ message: `[default] userMediaProgressUpdate: Received updated media progress for current user from socket event. Media item id ${payload.id}` }) + await AbsLogger.info({ tag: 'default', message: `userMediaProgressUpdate: Received updated media progress for current user from socket event. Media item id ${payload.id}` }) // Check if this media item is currently open in the player, paused, and this progress update is coming from a different session const isMediaOpenInPlayer = this.$store.getters['getIsMediaStreaming'](prog.libraryItemId, prog.episodeId) if (isMediaOpenInPlayer && this.$store.getters['getCurrentPlaybackSessionId'] !== payload.sessionId && !this.$store.state.playerIsPlaying) { - await AbsLogger.info({ message: `[default] userMediaProgressUpdate: Item is currently open in player, paused and this progress update is coming from a different session. Updating playback time to ${payload.data.currentTime}` }) + await AbsLogger.info({ tag: 'default', message: `userMediaProgressUpdate: Item is currently open in player, paused and this progress update is coming from a different session. Updating playback time to ${payload.data.currentTime}` }) this.$eventBus.$emit('playback-time-update', payload.data.currentTime) } @@ -237,12 +237,12 @@ export default { // Progress update is more recent then local progress if (localProg && localProg.lastUpdate < prog.lastUpdate) { if (localProg.currentTime == prog.currentTime && localProg.isFinished == prog.isFinished) { - await AbsLogger.info({ message: `[default] userMediaProgressUpdate: server lastUpdate is more recent but progress is up-to-date (libraryItemId: ${prog.libraryItemId}${prog.episodeId ? ` episodeId: ${prog.episodeId}` : ''})` }) + await AbsLogger.info({ tag: 'default', message: `userMediaProgressUpdate: server lastUpdate is more recent but progress is up-to-date (libraryItemId: ${prog.libraryItemId}${prog.episodeId ? ` episodeId: ${prog.episodeId}` : ''})` }) return } // Server progress is more up-to-date - await AbsLogger.info({ message: `[default] userMediaProgressUpdate: syncing progress from server with local item for "${prog.libraryItemId}" ${prog.episodeId ? `episode ${prog.episodeId}` : ''} | server lastUpdate=${prog.lastUpdate} > local lastUpdate=${localProg.lastUpdate}` }) + await AbsLogger.info({ tag: 'default', message: `userMediaProgressUpdate: syncing progress from server with local item for "${prog.libraryItemId}" ${prog.episodeId ? `episode ${prog.episodeId}` : ''} | server lastUpdate=${prog.lastUpdate} > local lastUpdate=${localProg.lastUpdate}` }) const payload = { localMediaProgressId: localProg.id, mediaProgress: prog @@ -280,7 +280,7 @@ export default { } if (newLocalMediaProgress?.id) { - await AbsLogger.info({ message: `[default] userMediaProgressUpdate: local media progress updated for ${newLocalMediaProgress.id}` }) + await AbsLogger.info({ tag: 'default', message: `userMediaProgressUpdate: local media progress updated for ${newLocalMediaProgress.id}` }) this.$store.commit('globals/updateLocalMediaProgress', newLocalMediaProgress) } }, @@ -317,7 +317,7 @@ export default { this.$socket.on('user_media_progress_updated', this.userMediaProgressUpdated) if (this.$store.state.isFirstLoad) { - AbsLogger.info({ message: `[default] mounted: first load` }) + AbsLogger.info({ tag: 'default', message: 'mounted: initializing first load' }) this.$store.commit('setIsFirstLoad', false) this.loadSavedSettings() @@ -330,19 +330,18 @@ export default { await this.$store.dispatch('setupNetworkListener') if (this.$store.state.user.serverConnectionConfig) { - AbsLogger.info({ message: `[default] Server connected, init libraries (ServerConfigName: ${this.$store.getters['user/getServerConfigName']})` }) + AbsLogger.info({ tag: 'default', message: `mounted: Server connected, init libraries (ServerConfigName: ${this.$store.getters['user/getServerConfigName']})` }) await this.initLibraries() } else { - AbsLogger.info({ message: `[default] Server not connected, attempt connection` }) + AbsLogger.info({ tag: 'default', message: `mounted: Server not connected, attempt connection` }) await this.attemptConnection() } - console.log(`[default] finished connection attempt or already connected ${!!this.user}`) await this.syncLocalSessions(true) this.hasMounted = true - console.log('[default] fully initialized') + AbsLogger.info({ tag: 'default', message: 'mounted: fully initialized' }) this.$eventBus.$emit('abs-ui-ready') } }, diff --git a/pages/logs.vue b/pages/logs.vue index 5f33221b..329baa36 100644 --- a/pages/logs.vue +++ b/pages/logs.vue @@ -1,22 +1,25 @@