From 9e5f0703c71fb5b0c18778a48d221d1b4ade7264 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sat, 30 Mar 2013 13:16:19 +0100 Subject: [PATCH] audio: Fix UnicodeDecodeError when logging errors Fixes #347 --- docs/changes.rst | 5 +++++ mopidy/audio/actor.py | 12 ++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/docs/changes.rst b/docs/changes.rst index 0fed14b8..46f266f4 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -24,6 +24,11 @@ v0.13.0 (in development) the Mopidy process will now always make it log tracebacks for all alive threads. +**Audio sub-system** + +- Make audio error logging handle log messages with non-ASCII chars. (Fixes: + :issue:`347`) + **Local backend** - Make ``mopidy-scan`` work with Ogg Vorbis files. (Fixes: :issue:`275`) diff --git a/mopidy/audio/actor.py b/mopidy/audio/actor.py index b154e21a..d8d4e9bc 100644 --- a/mopidy/audio/actor.py +++ b/mopidy/audio/actor.py @@ -241,11 +241,19 @@ class Audio(pykka.ThreadingActor): self._on_end_of_stream() elif message.type == gst.MESSAGE_ERROR: error, debug = message.parse_error() - logger.error('%s %s', error, debug) + logger.error( + '%s\nError message: %s\nDebug message: %s', + str(error).decode('utf-8'), + error.message.decode('utf-8') or 'None', + debug.decode('utf-8') or 'None') self.stop_playback() elif message.type == gst.MESSAGE_WARNING: error, debug = message.parse_warning() - logger.warning('%s %s', error, debug) + logger.warning( + '%s\nError message: %s\nDebug message: %s', + str(error).decode('utf-8'), + error.message.decode('utf-8') or 'None', + debug.decode('utf-8') or 'None') def _on_playbin_state_changed(self, old_state, new_state, pending_state): if new_state == gst.STATE_READY and pending_state == gst.STATE_NULL: