diff --git a/common/djangoapps/track/backends/logger.py b/common/djangoapps/track/backends/logger.py index fdb7f504ba..3ad9547692 100644 --- a/common/djangoapps/track/backends/logger.py +++ b/common/djangoapps/track/backends/logger.py @@ -11,6 +11,7 @@ from track.backends import BaseBackend from track.utils import DateTimeJSONEncoder log = logging.getLogger('track.backends.logger') +application_log = logging.getLogger('track.backends.application_log') # pylint: disable=invalid-name class LoggerBackend(BaseBackend): @@ -33,7 +34,13 @@ class LoggerBackend(BaseBackend): self.event_logger = logging.getLogger(name) def send(self, event): - event_str = json.dumps(event, cls=DateTimeJSONEncoder) + try: + event_str = json.dumps(event, cls=DateTimeJSONEncoder) + except UnicodeDecodeError: + application_log.exception( + "UnicodeDecodeError Event_type: %r, Event_source: %r, Page: %r, Referer: %r", + event.get('event_type'), event.get('event_source'), event.get('page'), event.get('referer') + ) # TODO: remove trucation of the serialized event, either at a # higher level during the emittion of the event, or by