[admin] use logger from qommon
git-svn-id: svn://localhost/lasso-conform/trunk@41 2a3a78c3-912c-0410-af21-e1fb2d1df599
This commit is contained in:
parent
7ded0be538
commit
5c884401b5
|
@ -1,165 +0,0 @@
|
|||
import random
|
||||
|
||||
from quixote import get_publisher, get_request, get_response, redirect
|
||||
from quixote.directory import Directory
|
||||
|
||||
from menu import *
|
||||
|
||||
import lcs
|
||||
from qommon import logger
|
||||
from qommon import misc
|
||||
from qommon.form import *
|
||||
from lcs.users import User
|
||||
from qommon import template
|
||||
|
||||
|
||||
class ByUserDirectory(Directory):
|
||||
def _q_lookup(self, component):
|
||||
return ByUserPages(component)
|
||||
|
||||
|
||||
class LoggerDirectory(Directory):
|
||||
_q_exports = ['', 'download', 'by_user']
|
||||
|
||||
by_user = ByUserDirectory()
|
||||
|
||||
def _q_index [html] (self):
|
||||
get_response().breadcrumb.append( ('logger/', _('Logs')) )
|
||||
html_top('logger', title = _('Logs'))
|
||||
request = get_request()
|
||||
logfile = request.get_field('logfile', 'lcs.log')
|
||||
if not logfile.startswith(str('lcs.log')) or str('/') in str(logfile):
|
||||
return template.error_page(_('Bad log file: %s') % logfile)
|
||||
logfilename = str(os.path.join(get_publisher().app_dir, logfile))
|
||||
|
||||
if not os.path.exists(logfilename):
|
||||
_('Nothing to show')
|
||||
else:
|
||||
if logfile:
|
||||
'<a href="download?logfile=%s">%s</a>' % (logfile, _('Download Raw Log File'))
|
||||
else:
|
||||
'<a href="download">%s</a>' % _('Download Raw Log File')
|
||||
|
||||
user_color_keys = {}
|
||||
last_date = None
|
||||
'<table id="logs">\n'
|
||||
'<thead> <tr>'
|
||||
' <th>%s</th>' % _('Time')
|
||||
' <th>%s</th>' % _('User')
|
||||
' <th>%s</th>' % _('Message')
|
||||
'<tr></thead>\n'
|
||||
'<tbody>\n'
|
||||
i = 1
|
||||
for line in file(logfilename):
|
||||
d = logger.readline(line)
|
||||
if not d:
|
||||
continue
|
||||
user_color_key = d['user_id']
|
||||
if user_color_key == 'anonymous':
|
||||
user_color_key += d['ip']
|
||||
if not user_color_keys.has_key(user_color_key):
|
||||
user_color_keys[user_color_key] = ''.join(
|
||||
['%x' % random.randint(0xc, 0xf) for x in range(3)])
|
||||
'<tr class="level-%s" style="background: #%s;">' % (
|
||||
d['level'].lower(), user_color_keys[user_color_key])
|
||||
if (last_date != d['date']):
|
||||
' <td class="time">%s %s</td>' % (d['date'], d['hour'][:-4])
|
||||
last_date = d['date']
|
||||
else:
|
||||
' <td class="time">%s</td>' % (d['hour'][:-4])
|
||||
if d['user_id'] == 'anonymous':
|
||||
userlabel = _('Anonymous')
|
||||
ip = d['ip']
|
||||
' <td class="userlabel"><span title="%s">%s</span></td>' % (ip, userlabel)
|
||||
elif d['user_id'] == 'unlogged':
|
||||
userlabel = _('Unlogged')
|
||||
ip = d['ip']
|
||||
' <td class="userlabel"><span title="%s">%s</span></td>' % (ip, userlabel)
|
||||
else:
|
||||
try:
|
||||
user = User.get(d['user_id'])
|
||||
except KeyError:
|
||||
userlabel = _('Unknown')
|
||||
else:
|
||||
userlabel = htmltext(user.name.replace(str(' '), str(' ')))
|
||||
' <td class="userlabel">%s</td>' % userlabel
|
||||
' <td class="message">%s</td>' % d['message']
|
||||
'</tr>\n'
|
||||
'</tbody>\n'
|
||||
'</table>\n'
|
||||
|
||||
logfiles = [x for x in os.listdir(get_publisher().app_dir) if x.startswith(str('lcs.log'))]
|
||||
if len(logfiles) > 1:
|
||||
options = []
|
||||
for lfile in logfiles:
|
||||
firstline = file(os.path.join(get_publisher().app_dir, lfile)).readline()
|
||||
d = logger.readline(firstline)
|
||||
if not d:
|
||||
continue
|
||||
if logfile == lfile:
|
||||
selected = 'selected="selected" '
|
||||
else:
|
||||
selected = ''
|
||||
options.append({'selected': selected, 'lfile': lfile,
|
||||
'date': '%s %s' % (d['date'], d['hour'])})
|
||||
|
||||
'<form id="other-log-select">'
|
||||
_('Select another logfile:')
|
||||
'<select name="logfile">'
|
||||
options.sort(lambda x,y: cmp(x['date'], y['date']))
|
||||
options.reverse()
|
||||
for option in options:
|
||||
option['since'] = str(_('Since: %s') % option['date'])[:-4]
|
||||
'<option value="%(lfile)s"%(selected)s>%(since)s</option>' % option
|
||||
'</select>'
|
||||
'<input type="submit" value="%s" />' % _('Submit')
|
||||
|
||||
|
||||
def download(self):
|
||||
request = get_request()
|
||||
logfile = request.get_field('logfile', 'lcs.log')
|
||||
if not logfile.startswith(str('lcs.log')) or str('/') in logfile:
|
||||
return template.error_page(_('Bad log file: %s') % logfile)
|
||||
logfilename = os.path.join(get_publisher().app_dir, logfile)
|
||||
response = get_response()
|
||||
response.set_content_type('text/x-log', 'iso-8859-1')
|
||||
response.set_header('content-disposition', 'attachment; filename=%s' % logfile)
|
||||
return open(logfilename).read()
|
||||
|
||||
|
||||
class ByUserPages(Directory):
|
||||
_q_exports = ['']
|
||||
|
||||
def __init__(self, component):
|
||||
try:
|
||||
self.user = User.get(component)
|
||||
except KeyError:
|
||||
raise TraversalError()
|
||||
|
||||
def _q_index [html] (self):
|
||||
html_top('logger', title = _('Logs'))
|
||||
'<h2>%s - %s</h2>' % (_('User'), self.user.name)
|
||||
|
||||
last_date = None
|
||||
'<table id="logs">'
|
||||
'<thead> <tr>'
|
||||
' <th>%s</th>' % _('Time')
|
||||
' <th>%s</th>' % _('Message')
|
||||
'<tr></thead>'
|
||||
'<tbody>'
|
||||
if os.path.exists(logger.logfile):
|
||||
for line in file(logger.logfile):
|
||||
d = logger.readline(line)
|
||||
if not d or d['user_id'] != str(self.user.id):
|
||||
continue
|
||||
'<tr>'
|
||||
if (last_date != d['date']):
|
||||
' <td class="time">%s %s</td>' % (d['date'], d['hour'][:-4])
|
||||
last_date = d['date']
|
||||
else:
|
||||
' <td class="time">%s</td>' % (d['hour'][:-4])
|
||||
' <td><a href="%s">%s</a></td>' % (d['url'], d['message'])
|
||||
'</tr>'
|
||||
'</tbody>'
|
||||
'</table>'
|
||||
|
|
@ -5,7 +5,7 @@ from quixote.directory import Directory, AccessControlled
|
|||
|
||||
import settings
|
||||
import users
|
||||
import logger
|
||||
from qommon.admin import logger
|
||||
|
||||
from qommon import errors
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ import liberty
|
|||
from qommon import saml2
|
||||
|
||||
from qommon import errors
|
||||
from qommon import logger
|
||||
from qommon import get_logger
|
||||
from qommon import get_cfg
|
||||
from qommon import template
|
||||
from qommon.form import *
|
||||
|
@ -71,7 +71,7 @@ class LoginDirectory(Directory):
|
|||
_q_exports = ['']
|
||||
|
||||
def _q_index [html] (self):
|
||||
logger.info('login')
|
||||
get_logger().info('login')
|
||||
ident_methods = get_cfg('identification', {}).get('methods', [])
|
||||
|
||||
if len(ident_methods) == 0:
|
||||
|
@ -389,7 +389,7 @@ class RootDirectory(Directory):
|
|||
|
||||
|
||||
def logout(self):
|
||||
logger.info('logout')
|
||||
get_logger().info('logout')
|
||||
session = get_session()
|
||||
if not session:
|
||||
return redirect('/')
|
||||
|
|
Reference in New Issue