[imp] remove crappy log() function from db_sql, migrate to logging's Logger

bzr revid: xmo@tinyerp.com-20100302095840-bavk87douskr01af
This commit is contained in:
Xavier Morel 2010-03-02 10:58:40 +01:00
parent 9150c0695f
commit f8ef7598b6
1 changed files with 15 additions and 16 deletions

View File

@ -21,6 +21,7 @@
__all__ = ['db_connect', 'close_db']
import logging
import netsvc
from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT, ISOLATION_LEVEL_READ_COMMITTED, ISOLATION_LEVEL_SERIALIZABLE
from psycopg2.psycopg1 import cursor as psycopg1cursor
@ -60,15 +61,11 @@ import re
re_from = re.compile('.* from "?([a-zA-Z_0-9]+)"? .*$');
re_into = re.compile('.* into "?([a-zA-Z_0-9]+)"? .*$');
def log(msg, lvl=netsvc.LOG_DEBUG):
logger = netsvc.Logger()
logger.notifyChannel('sql', lvl, msg)
sql_counter = 0
class Cursor(object):
IN_MAX = 1000
__logger = logging.getLogger('db.cursor')
def check(f):
@wraps(f)
@ -102,15 +99,16 @@ class Cursor(object):
# pool, preventing some operation on the database like dropping it.
# This can also lead to a server overload.
msg = "Cursor not closed explicitly\n" \
"Cursor was created at %s:%s" % self.__caller
log(msg, netsvc.LOG_WARNING)
"Cursor was created at %s:%s"
self.__logger.warn(msg, *self.__caller)
self.close()
@check
def execute(self, query, params=None):
if '%d' in query or '%f' in query:
log(query, netsvc.LOG_WARNING)
log("SQL queries cannot contain %d or %f anymore. Use only %s", netsvc.LOG_WARNING)
self.__logger.warn(query)
self.__logger.warn("SQL queries cannot contain %d or %f anymore. "
"Use only %s")
if params:
query = query.replace('%d', '%s').replace('%f', '%s')
@ -124,16 +122,15 @@ class Cursor(object):
logger= netsvc.Logger()
logger.notifyChannel('sql_db', netsvc.LOG_ERROR, "Programming error: %s, in query %s" % (pe, query))
raise
except Exception, e:
log("bad query: %s" % self._obj.query)
log(e)
except Exception:
self.__logger.exception("bad query: %s", self._obj.query)
raise
if self.sql_log:
delay = mdt.now() - now
delay = delay.seconds * 1E6 + delay.microseconds
log("query: %s" % self._obj.query)
self.__logger.debug("query: %s", self._obj.query)
self.sql_log_count+=1
res_from = re_from.match(query.lower())
if res_from:
@ -158,14 +155,16 @@ class Cursor(object):
if sqllogs[type]:
sqllogitems = sqllogs[type].items()
sqllogitems.sort(key=lambda k: k[1][1])
log("SQL LOG %s:" % (type,))
self.__logger.debug("SQL LOG %s:", type)
for r in sqllogitems:
delay = timedelta(microseconds=r[1][1])
log("table: %s: %s/%s" %(r[0], str(delay), r[1][0]))
self.__logger.debug("table: %s: %s/%s",
r[0], delay, r[1][0])
sum+= r[1][1]
sqllogs[type].clear()
sum = timedelta(microseconds=sum)
log("SUM %s:%s/%d [%d]" % (type, str(sum), self.sql_log_count, sql_counter))
self.__logger.debug("SUM %s:%s/%d [%d]",
type, sum, self.sql_log_count, sql_counter)
sqllogs[type].clear()
process('from')
process('into')