diff --git a/data/css/style.css b/data/css/style.css
index 511c8ae7..c8b0eb22 100755
--- a/data/css/style.css
+++ b/data/css/style.css
@@ -190,7 +190,7 @@ table#log_table { background-color: white; }
table#log_table th#timestamp { text-align: left; min-width: 165px; }
table#log_table th#level { text-align: left; min-width: 75px; }
-table#log_table th#message { text-align: left; min-width: 200px; }
+table#log_table th#message { text-align: left; min-width: 500px; }
table#upcoming_table th#albumart { text-align: center; min-width: 50px; }
table#upcoming_table th#albumname { text-align: center; min-width: 200px; }
diff --git a/data/interfaces/default/logs.html b/data/interfaces/default/logs.html
index cc6436f3..98004034 100644
--- a/data/interfaces/default/logs.html
+++ b/data/interfaces/default/logs.html
@@ -15,23 +15,18 @@
%for line in lineList:
<%
- out_tuple = helpers.extract_logline(line)
+ timestamp, message, level, threadname = line
+
+ if level == 'WARNING' or level == 'ERROR':
+ grade = 'X'
+ else:
+ grade = 'Z'
%>
- %if out_tuple:
- <%
- if out_tuple[1] == 'DEBUG':
- continue
- elif out_tuple[1] == 'WARNING' or out_tuple[1] == 'ERROR':
- grade = 'X'
- else:
- grade = 'Z'
- %>
- | ${out_tuple[0]} |
- ${out_tuple[1]} |
- ${out_tuple[3].decode('utf-8')} |
+ ${timestamp} |
+ ${level} |
+ ${message} |
- %endif
%endfor
diff --git a/headphones/__init__.py b/headphones/__init__.py
index 47e8ed29..4671177a 100644
--- a/headphones/__init__.py
+++ b/headphones/__init__.py
@@ -37,6 +37,8 @@ CFG = None
DB_FILE = None
LOG_DIR = None
+LOG_LIST = []
+
CACHE_DIR = None
HTTP_PORT = None
diff --git a/headphones/helpers.py b/headphones/helpers.py
index 9dc3aa10..4ecc6941 100644
--- a/headphones/helpers.py
+++ b/headphones/helpers.py
@@ -5,8 +5,6 @@ import re
import headphones
-from headphones import logger
-
def multikeysort(items, columns):
comparers = [ ((itemgetter(col[1:].strip()), -1) if col.startswith('-') else (itemgetter(col.strip()), 1)) for col in columns]
@@ -91,6 +89,10 @@ def today():
yyyymmdd = datetime.date.isoformat(today)
return yyyymmdd
+def now():
+ now = datetime.datetime.now()
+ return now.strftime("%Y-%m-%d %H:%M:%S")
+
def bytes_to_mb(bytes):
mb = int(bytes)/1048576
@@ -103,6 +105,9 @@ def replace_all(text, dic):
return text
def extract_data(s):
+
+ from headphones import logger
+
#headphones default format
pattern = re.compile(r'(?P.*?)\s\-\s(?P.*?)\s\[(?P.*?)\]', re.VERBOSE)
match = pattern.match(s)
diff --git a/headphones/logger.py b/headphones/logger.py
index f861a4c3..93c77c57 100644
--- a/headphones/logger.py
+++ b/headphones/logger.py
@@ -4,6 +4,7 @@ import logging
from logging import handlers
import headphones
+from headphones import helpers
MAX_SIZE = 1000000 # 1mb
MAX_FILES = 5
@@ -45,33 +46,36 @@ class RotatingLogger(object):
l.addHandler(consolehandler)
def log(self, message, level):
-
+
logger = logging.getLogger('headphones')
threadname = threading.currentThread().getName()
- message = threadname + ' : ' + message
- if level == 'debug':
+ if level != 'DEBUG':
+ headphones.LOG_LIST.insert(0, (helpers.now(), message, level, threadname))
+
+ message = threadname + ' : ' + message
+
+ if level == 'DEBUG':
logger.debug(message)
- elif level == 'info':
+ elif level == 'INFO':
logger.info(message)
- elif level == 'warn':
+ elif level == 'WARN':
logger.warn(message)
else:
logger.error(message)
-
headphones_log = RotatingLogger('headphones.log', MAX_SIZE, MAX_FILES)
def debug(message):
- headphones_log.log(message, level='debug')
+ headphones_log.log(message, level='DEBUG')
def info(message):
- headphones_log.log(message, level='info')
+ headphones_log.log(message, level='INFO')
def warn(message):
- headphones_log.log(message, level='warn')
+ headphones_log.log(message, level='WARN')
def error(message):
- headphones_log.log(message, level='error')
+ headphones_log.log(message, level='ERROR')
diff --git a/headphones/webserve.py b/headphones/webserve.py
index fd406306..779f6da0 100644
--- a/headphones/webserve.py
+++ b/headphones/webserve.py
@@ -231,13 +231,7 @@ class WebInterface(object):
history.exposed = True
def logs(self):
- log_file = os.path.join(headphones.LOG_DIR, 'headphones.log')
- if os.path.isfile(log_file):
- fileHandle = open(log_file)
- lineList = fileHandle.readlines()
- fileHandle.close()
- lineList.reverse()
- return serve_template(templatename="logs.html", title="Log", lineList=lineList[0:500])
+ return serve_template(templatename="logs.html", title="Log", lineList=headphones.LOG_LIST)
logs.exposed = True
def clearhistory(self, type=None):