-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlog.py
79 lines (73 loc) · 2.35 KB
/
log.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import os
import json
import msgpack
import tornado.web
import tornado.gen
import tornadoredis
import datetime
from req import reqenv
from req import RequestHandler
#from user import UserConst
#from user import UserService
from pygments import highlight
from pygments.lexers import get_lexer_by_name
from pygments.formatters import HtmlFormatter
from req import Service
# from chal import ChalService
class LogService:
def __init__(self,db,rs):
self.db = db
self.rs = rs
LogService.inst = self
def add_log(self,message, log_type=None, params=None):
if isinstance(params, dict):
params = json.dumps(params, ensure_ascii=False)
message = str(message)
cur = yield self.db.cursor()
yield cur.execute(('INSERT INTO "log" '
'("message", "type", "params") '
'VALUES (%s, %s, %s) RETURNING "log_id";'),[message, log_type, params])
log_id = cur.fetchone()[0]
return (None,log_id)
def list_log(self,off,num):
#self.add_log('list log')
cur = yield self.db.cursor()
yield cur.execute(('SELECT '
'"log"."log_id",'
'"log"."message",'
'"log"."timestamp"'
'FROM "log" '
'ORDER BY "log"."timestamp" DESC OFFSET %s LIMIT %s;'),
[off,num])
loglist = list()
for (log_id,message,timestamp) in cur:
loglist.append({
'log_id':log_id,
'message':message,
'timestamp':timestamp
})
yield cur.execute('SELECT COUNT(*) FROM "log" ;')
lognum = cur.fetchone()[0]
# lognum = 0
return (None,{'loglist':loglist,'lognum':lognum})
class LogHandler(RequestHandler):
@reqenv
def get(self):
#yield from LogService.inst.add_log('list log')
from user import UserConst
if self.acct['acct_type'] != UserConst.ACCTTYPE_KERNEL:
self.finish('Eacces')
return
try:
off = int(self.get_argument('off'))
except tornado.web.HTTPError:
off = 0
err,log = yield from LogService.inst.list_log(off,50)
if err:
self.finish(err)
return
self.render('loglist',
pageoff = off,
lognum = log['lognum'],
loglist = log['loglist'])
return