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