Example #1
0
 def connection_raw_execute(self, connection, raw_cursor, statement,
                            params):
     statement_to_log = statement
     if params:
         statement_to_log = raw_cursor.mogrify(
             statement, tuple(connection.to_database(params)))
     if isinstance(statement_to_log, bytes):
         statement_to_log = statement_to_log.decode('UTF-8',
                                                    errors='replace')
     # Record traceback to log, if requested.
     print_traceback = self._debug_sql_extra
     log_sql = getattr(_local, 'sql_logging', None)
     log_traceback = False
     if log_sql is not None:
         log_sql.append(dict(stack=None, sql=None, exception=None))
         conditional = getattr(_local, 'sql_logging_tracebacks_if', None)
         if callable(conditional):
             try:
                 log_traceback = conditional(
                     self._normalize_whitespace(
                         statement_to_log.strip()).upper())
             except (MemoryError, SystemExit, KeyboardInterrupt):
                 raise
             except:
                 exc_type, exc_value, tb = sys.exc_info()
                 log_sql[-1]['exception'] = (exc_type, exc_value)
                 log_sql[-1]['stack'] = extract_tb(tb)
         else:
             log_traceback = bool(conditional)
     if print_traceback or log_traceback:
         stack = extract_stack()
         if log_traceback:
             log_sql[-1]['stack'] = stack
         if print_traceback:
             print_list(stack)
             sys.stderr.write("." * 70 + "\n")
     # store the last executed statement as an attribute on the current
     # thread
     threading.currentThread().lp_last_sql_statement = statement
     request_starttime = getattr(_local, 'request_start_time', None)
     if request_starttime is None:
         if print_traceback or self._debug_sql or log_sql is not None:
             # Stash some information for logging at the end of the
             # SQL execution.
             connection._lp_statement_info = (int(
                 time() * 1000), u'SQL-%s' % connection._database.name,
                                              statement_to_log)
         return
     action = get_request_timeline(get_current_browser_request()).start(
         u'SQL-%s' % connection._database.name, statement_to_log)
     connection._lp_statement_action = action
Example #2
0
 def connection_raw_execute(self, connection, raw_cursor,
                            statement, params):
     statement_to_log = statement
     if params:
         statement_to_log = raw_cursor.mogrify(
             statement, tuple(connection.to_database(params)))
     # Record traceback to log, if requested.
     print_traceback = self._debug_sql_extra
     log_sql = getattr(_local, 'sql_logging', None)
     log_traceback = False
     if log_sql is not None:
         log_sql.append(dict(stack=None, sql=None, exception=None))
         conditional = getattr(_local, 'sql_logging_tracebacks_if', None)
         if callable(conditional):
             try:
                 log_traceback = conditional(
                     self._normalize_whitespace(
                         statement_to_log.strip()).upper())
             except (MemoryError, SystemExit, KeyboardInterrupt):
                 raise
             except:
                 exc_type, exc_value, tb = sys.exc_info()
                 log_sql[-1]['exception'] = (exc_type, exc_value)
                 log_sql[-1]['stack'] = extract_tb(tb)
         else:
             log_traceback = bool(conditional)
     if print_traceback or log_traceback:
         stack = extract_stack()
         if log_traceback:
             log_sql[-1]['stack'] = stack
         if print_traceback:
             print_list(stack)
             sys.stderr.write("." * 70 + "\n")
     # store the last executed statement as an attribute on the current
     # thread
     threading.currentThread().lp_last_sql_statement = statement
     request_starttime = getattr(_local, 'request_start_time', None)
     if request_starttime is None:
         if print_traceback or self._debug_sql or log_sql is not None:
             # Stash some information for logging at the end of the
             # SQL execution.
             connection._lp_statement_info = (
                 int(time() * 1000),
                 'SQL-%s' % connection._database.name,
                 statement_to_log)
         return
     action = get_request_timeline(get_current_browser_request()).start(
         'SQL-%s' % connection._database.name, statement_to_log)
     connection._lp_statement_action = action
 def test_extract_tb(self):
     try:
         raise ValueError()
     except ValueError:
         type_, value, tb = sys.exc_info()
     extracted = stacktrace.extract_tb(tb)
     self.assertEqual(1, len(extracted))
     filename, lineno, name, line, modname, supplement, info = (
         extracted[0])
     self.assertEqual(MY_FILE_NAME, filename)
     self.assertIsInstance(lineno, int)
     self.assertEqual('test_extract_tb', name)
     self.assertEqual('raise ValueError()', line)
     self.assertEqual(__name__, modname)
     self.assertIs(None, supplement)
     self.assertIs(None, info)
Example #4
0
 def test_extract_tb(self):
     try:
         raise ValueError()
     except ValueError:
         type_, value, tb = sys.exc_info()
     extracted = stacktrace.extract_tb(tb)
     self.assertEqual(1, len(extracted))
     filename, lineno, name, line, modname, supplement, info = (
         extracted[0])
     self.assertEqual(MY_FILE_NAME, filename)
     self.assertIsInstance(lineno, int)
     self.assertEqual('test_extract_tb', name)
     self.assertEqual('raise ValueError()', line)
     self.assertEqual(__name__, modname)
     self.assertIs(None, supplement)
     self.assertIs(None, info)