Logs return list

This commit is contained in:
Ruud
2014-05-08 16:16:42 +02:00
parent e7fbff5b3f
commit 923c794e39
+36 -7
View File
@@ -1,9 +1,10 @@
import os import os
import re
import traceback import traceback
from couchpotato.api import addApiView from couchpotato.api import addApiView
from couchpotato.core.helpers.encoding import toUnicode from couchpotato.core.helpers.encoding import toUnicode
from couchpotato.core.helpers.variable import tryInt from couchpotato.core.helpers.variable import tryInt, splitString
from couchpotato.core.logger import CPLog from couchpotato.core.logger import CPLog
from couchpotato.core.plugins.base import Plugin from couchpotato.core.plugins.base import Plugin
from couchpotato.environment import Env from couchpotato.environment import Env
@@ -71,10 +72,11 @@ class Logging(Plugin):
if current_path: if current_path:
f = open(current_path, 'r') f = open(current_path, 'r')
log_content = f.read() log_content = f.read()
logs = self.toList(log_content)
return { return {
'success': True, 'success': True,
'log': toUnicode(log_content), 'log': logs,
'total': total, 'total': total,
} }
@@ -93,13 +95,14 @@ class Logging(Plugin):
break break
f = open(path, 'r') f = open(path, 'r')
reversed_lines = toUnicode(f.read()).split('[0m\n') log_content = toUnicode(f.read())
reversed_lines.reverse() raw_lines = self.toList(log_content)
raw_lines.reverse()
brk = False brk = False
for line in reversed_lines: for line in raw_lines:
if type == 'all' or '%s ' % type.upper() in line: if type == 'all' or line.get('type') == type.upper():
log_lines.append(line) log_lines.append(line)
if len(log_lines) >= total_lines: if len(log_lines) >= total_lines:
@@ -112,9 +115,35 @@ class Logging(Plugin):
log_lines.reverse() log_lines.reverse()
return { return {
'success': True, 'success': True,
'log': '[0m\n'.join(log_lines), 'log': log_lines,
} }
def toList(self, log_content = ''):
logs_raw = toUnicode(log_content).split('[0m\n')
logs = []
for log in logs_raw:
split = splitString(log, '\x1b')
if split:
try:
date, time, log_type = splitString(split[0], ' ')
timestamp = '%s %s' % (date, time)
except:
timestamp = 'UNKNOWN'
log_type = 'UNKNOWN'
message = ''.join(split[1]) if len(split) > 1 else split[0]
message = re.sub('\[\d+m\[', '[', message)
logs.append({
'time': timestamp,
'type': log_type,
'message': message
})
return logs
def clear(self, **kwargs): def clear(self, **kwargs):
for x in range(0, 50): for x in range(0, 50):