Mercurial > kallithea
diff rhodecode/lib/timerproxy.py @ 1228:73434499fa72
merges for stable
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sat, 09 Apr 2011 11:22:32 +0200 |
parents | 1e757ac98988 |
children | bf263968da47 |
line wrap: on
line diff
--- a/rhodecode/lib/timerproxy.py Fri Apr 08 00:47:20 2011 +0200 +++ b/rhodecode/lib/timerproxy.py Sat Apr 09 11:22:32 2011 +0200 @@ -1,59 +1,28 @@ from sqlalchemy.interfaces import ConnectionProxy import time -from sqlalchemy import log +import logging +log = logging.getLogger('timerproxy') + BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = xrange(30, 38) def color_sql(sql): COLOR_SEQ = "\033[1;%dm" COLOR_SQL = YELLOW normal = '\x1b[0m' - return COLOR_SEQ % COLOR_SQL + sql + normal - -def one_space_trim(s): - if s.find(" ") == -1: - return s - else: - s = s.replace(' ', ' ') - return one_space_trim(s) - -def format_sql(sql): - sql = color_sql(sql) - sql = sql.replace('\n', '') - sql = one_space_trim(sql) - sql = sql\ - .replace(',', ',\n\t')\ - .replace('SELECT', '\n\tSELECT \n\t')\ - .replace('UPDATE', '\n\tUPDATE \n\t')\ - .replace('DELETE', '\n\tDELETE \n\t')\ - .replace('FROM', '\n\tFROM')\ - .replace('ORDER BY', '\n\tORDER BY')\ - .replace('LIMIT', '\n\tLIMIT')\ - .replace('WHERE', '\n\tWHERE')\ - .replace('AND', '\n\tAND')\ - .replace('LEFT', '\n\tLEFT')\ - .replace('INNER', '\n\tINNER')\ - .replace('INSERT', '\n\tINSERT')\ - .replace('DELETE', '\n\tDELETE') - return sql - + return COLOR_SEQ % COLOR_SQL + sql + normal class TimerProxy(ConnectionProxy): - + def __init__(self): super(TimerProxy, self).__init__() - self.logging_name = 'timerProxy' - self.log = log.instance_logger(self, True) - - def cursor_execute(self, execute, cursor, statement, parameters, context, executemany): - + + def cursor_execute(self, execute, cursor, statement, parameters, + context, executemany): + now = time.time() try: - self.log.info(">>>>> STARTING QUERY >>>>>") + log.info(color_sql(">>>>> STARTING QUERY >>>>>")) return execute(cursor, statement, parameters, context) finally: total = time.time() - now - try: - self.log.info(format_sql("Query: %s" % statement % parameters)) - except TypeError: - self.log.info(format_sql("Query: %s %s" % (statement, parameters))) - self.log.info("<<<<< TOTAL TIME: %f <<<<<" % total) + log.info(color_sql("<<<<< TOTAL TIME: %f <<<<<" % total))