diff --git a/plexpy/log_reader.py b/plexpy/log_reader.py index 259e2cc4..bb1d0186 100644 --- a/plexpy/log_reader.py +++ b/plexpy/log_reader.py @@ -38,7 +38,7 @@ def get_log_tail(window=20, parsed=True, log_type="server"): return [] try: - logfile = open(log_file, "r") + logfile = open(log_file, "r", encoding="utf-8") except IOError as e: logger.error('Unable to open Plex Log file. %s' % e) return [] @@ -52,7 +52,7 @@ def get_log_tail(window=20, parsed=True, log_type="server"): try: log_time = i.split(' [')[0] log_level = i.split('] ', 1)[1].split(' - ', 1)[0] - log_msg = str(i.split('] ', 1)[1].split(' - ', 1)[1], 'utf-8') + log_msg = i.split('] ', 1)[1].split(' - ', 1)[1] full_line = [log_time, log_level, log_msg] clean_lines.append(full_line) except: diff --git a/plexpy/logger.py b/plexpy/logger.py index 989b2e87..ca87544b 100644 --- a/plexpy/logger.py +++ b/plexpy/logger.py @@ -264,7 +264,7 @@ def initLogger(console=False, log_dir=False, verbose=False): # Main Tautulli logger filename = os.path.join(log_dir, FILENAME) - file_handler = handlers.RotatingFileHandler(filename, maxBytes=MAX_SIZE, backupCount=MAX_FILES) + file_handler = handlers.RotatingFileHandler(filename, maxBytes=MAX_SIZE, backupCount=MAX_FILES, encoding='utf-8') file_handler.setLevel(logging.DEBUG) file_handler.setFormatter(file_formatter) @@ -272,7 +272,7 @@ def initLogger(console=False, log_dir=False, verbose=False): # Tautulli API logger filename = os.path.join(log_dir, FILENAME_API) - file_handler = handlers.RotatingFileHandler(filename, maxBytes=MAX_SIZE, backupCount=MAX_FILES) + file_handler = handlers.RotatingFileHandler(filename, maxBytes=MAX_SIZE, backupCount=MAX_FILES, encoding='utf-8') file_handler.setLevel(logging.DEBUG) file_handler.setFormatter(file_formatter) @@ -280,7 +280,7 @@ def initLogger(console=False, log_dir=False, verbose=False): # Tautulli websocket logger filename = os.path.join(log_dir, FILENAME_PLEX_WEBSOCKET) - file_handler = handlers.RotatingFileHandler(filename, maxBytes=MAX_SIZE, backupCount=MAX_FILES) + file_handler = handlers.RotatingFileHandler(filename, maxBytes=MAX_SIZE, backupCount=MAX_FILES, encoding='utf-8') file_handler.setLevel(logging.DEBUG) file_handler.setFormatter(file_formatter) diff --git a/plexpy/webserve.py b/plexpy/webserve.py index 1f4e3320..5543b16c 100644 --- a/plexpy/webserve.py +++ b/plexpy/webserve.py @@ -2370,18 +2370,18 @@ class WebInterface(object): else: filename = logger.FILENAME - with open(os.path.join(plexpy.CONFIG.LOG_DIR, filename)) as f: + with open(os.path.join(plexpy.CONFIG.LOG_DIR, filename), 'r', encoding='utf-8') as f: for l in f.readlines(): try: temp_loglevel_and_time = l.split(' - ', 1) loglvl = temp_loglevel_and_time[1].split(' ::', 1)[0].strip() - msg = helpers.sanitize(str(l.split(' : ', 1)[1].replace('\n', ''), 'utf-8')) + msg = helpers.sanitize(l.split(' : ', 1)[1].replace('\n', '')) fa([temp_loglevel_and_time[0], loglvl, msg]) except IndexError: # Add traceback message to previous msg. tl = (len(filt) - 1) n = len(l) - len(l.lstrip(' ')) - ll = ' ' * (2 * n) + helpers.sanitize(str(l[n:], 'utf-8')) + ll = ' ' * (2 * n) + helpers.sanitize(l[n:]) filt[tl][2] += '
' + ll continue @@ -2705,7 +2705,7 @@ class WebInterface(object): filename = logger.FILENAME try: - with open(os.path.join(plexpy.CONFIG.LOG_DIR, filename), 'r') as f: + with open(os.path.join(plexpy.CONFIG.LOG_DIR, filename), 'r', encoding='utf-8') as f: return '
%s
' % f.read() except IOError as e: return "Log file not found."