Source code for tic.web.browser.console
import os.path
from tic.utils.simplejson import dumps
import logging
import os
import sys
from datetime import datetime, time
MESSAGES = []
# next bit filched from 1.5.2's inspect.py
[docs]def currentframe():
"""Return the frame object for the caller's stack frame."""
try:
raise Exception
except:
return sys.exc_traceback.tb_frame.f_back
if hasattr(sys, '_getframe'): currentframe = lambda: sys._getframe(2)
[docs]def find_caller():
"""
Find the stack frame of the caller so that we can note the source
file name, line number and function name.
"""
f = currentframe().f_back
rv = "(unknown file)", 0, "(unknown function)"
while hasattr(f, "f_code"):
co = f.f_code
filename = os.path.normcase(co.co_filename)
rv = (filename, f.f_lineno, co.co_name)
break
return rv
[docs]def log(message, type="INFO"):
"""
TODO: do something with the type
"""
global MESSAGES
filename, lineno, func = find_caller()
filename = filename.replace(os.path.abspath(os.curdir), '')
now = datetime.now()
t = datetime.strftime(datetime.now(), "%Y-%m-%d %H:%M:%S")
s = "%s,%03d" % (t, now.microsecond/1000)
MESSAGES.append("[SERVER] %s %s %s:%s] %s" % ('INFO', s, filename,lineno, message))
[docs]def error(message):
log(message, "ERROR")
[docs]def get_js(result):
global MESSAGES
if not MESSAGES: return
m = '\n'.join(MESSAGES)
MESSAGES = []
return "function(){console.log(%s);return %s;}()" % (dumps(m), result)