Ejemplo n.º 1
0
def register_timing(config):
    timing_modules = ['timing_urllib', 'timing_urllib2', 'timing_urllib3',
                      'timing_requests', 'timing_httplib', 'timing_pysolr',
                      'timing_chameleon', 'timing_mako', 'timing_jinja2',
                      'timing_pymongo', 'timing_redispy', 'timing_memcache',
                      'timing_django_templates']

    for mod in timing_modules:
        min_time = config['timing'].get(mod.replace("timing_", '').lower())
        if min_time is not False:
            log.debug('%s slow time:%s' % (mod, min_time or 'default'))
            e_callable = import_from_module(
                'appenlight_client.timing.%s:add_timing' % mod)
            if e_callable:
                if min_time:
                    e_callable(min_time)
                else:
                    e_callable()
        else:
            log.debug('not tracking slow time:%s' % mod)

    db_modules = ['pg8000', 'psycopg2', 'MySQLdb', 'sqlite3', 'oursql',
                  'pyodbc', 'pypyodbc',
                  'cx_Oracle', 'kinterbasdb', 'postgresql', 'pymysql']
    import appenlight_client.timing.timing_dbapi2 as dbapi2

    for mod in db_modules:
        min_time = config['timing'].get('dbapi2_%s' % mod.lower())
        log.debug('%s dbapi query time:%s' % (mod, min_time or 'default'))
        if min_time is not False:
            if min_time:
                dbapi2.add_timing(mod, min_time)
            else:
                dbapi2.add_timing(mod)
Ejemplo n.º 2
0
 def register_logger(self, logger=logging.root):
     handler_cls = import_from_module('appenlight_client.ext.logging.logger:ThreadLocalHandler')
     log_handler = register_logging(logger,
                                    client_config=self.config,
                                    cls=handler_cls)
     level = LEVELS.get(self.config['logging_level'], logging.WARNING)
     log_handler.setLevel(level)
     self.log_handlers.append(log_handler)
Ejemplo n.º 3
0
 def register_logger(self, logger=logging.root):
     handler_cls = import_from_module(
         'appenlight_client.ext.logging.logger:ThreadLocalHandler')
     log_handler = register_logging(logger,
                                    client_config=self.config,
                                    cls=handler_cls)
     level = LEVELS.get(self.config['logging_level'], logging.WARNING)
     log_handler.setLevel(level)
     self.log_handlers.append(log_handler)
Ejemplo n.º 4
0
 def register_hooks(self):
     for hook in self.hooks:
         if hook in self.hooks_blacklist:
             print 'blacklisted', hook
             continue
         try:
             e_callable = import_from_module('appenlight_client.hooks.%s:register' % hook)
             if e_callable:
                 e_callable()
         except Exception, e:
             raise
             log.warning("Couln't attach hook: %s" % hook)
Ejemplo n.º 5
0
 def register_hooks(self):
     for hook in self.hooks:
         if hook in self.hooks_blacklist:
             log.debug('blacklisted %s' % hook)
             continue
         try:
             e_callable = import_from_module(
                 'appenlight_client.hooks.%s:register' % hook)
             if e_callable:
                 e_callable()
         except Exception:
             raise
             log.warning("Couln't attach hook: %s" % hook)
Ejemplo n.º 6
0
    def reinitialize(self):
        self.filter_callable = lambda x: x
        if self.config['filter_callable']:
            try:
                parts = self.config['filter_callable'].split(':')
                _tmp = __import__(parts[0], globals(), locals(), [
                    parts[1],
                ], 0)
                self.filter_callable = getattr(_tmp, parts[1])
            except ImportError as e:
                self.filter_callable = filter_callable
                msg = 'Could not import filter callable, using default, %s' % e
                log.error(msg)
        else:
            self.filter_callable = filter_callable

        self.unregister_logger()
        if self.config['logging'] and self.config['enabled']:
            self.register_logger()

        if self.config['slow_requests'] and self.config['enabled']:
            import appenlight_client.timing

            appenlight_client.timing.register_timing(self.config)

        self.hooks = ['hook_pylons']

        # register hooks
        if self.config['enabled']:
            self.register_hooks()

        selected_transport = import_from_module(self.config['transport'])

        if not selected_transport:
            from appenlight_client.transports.requests import \
                HTTPTransport as selected_transport

            msg = 'Could not import transport %s, using default, %s' % (
                self.config['transport'], str(selected_transport))
            log.error(msg)

        self.transport = selected_transport(self.config['transport_config'],
                                            self.config)
Ejemplo n.º 7
0
    def reinitialize(self):
        self.filter_callable = lambda x: x
        if self.config['filter_callable']:
            try:
                parts = self.config['filter_callable'].split(':')
                _tmp = __import__(parts[0], globals(), locals(),
                                  [parts[1], ], 0)
                self.filter_callable = getattr(_tmp, parts[1])
            except ImportError as e:
                self.filter_callable = filter_callable
                msg = 'Could not import filter callable, using default, %s' % e
                log.error(msg)
        else:
            self.filter_callable = filter_callable

        self.unregister_logger()
        if self.config['logging'] and self.config['enabled']:
            self.register_logger()

        if self.config['slow_requests'] and self.config['enabled']:
            import appenlight_client.timing

            appenlight_client.timing.register_timing(self.config)

        self.hooks = ['hook_pylons']

        # register hooks
        if self.config['enabled']:
            self.register_hooks()

        selected_transport = import_from_module(self.config['transport'])

        if not selected_transport:
            from appenlight_client.transports.requests import \
                HTTPTransport as selected_transport

            msg = 'Could not import transport %s, using default, %s' % (
                self.config['transport'], str(selected_transport))
            log.error(msg)

        self.transport = selected_transport(self.config['transport_config'],
                                            self.config)
def register_timing(config):
    timing_modules = [
        'timing_urllib', 'timing_urllib2', 'timing_urllib3', 'timing_requests',
        'timing_httplib', 'timing_pysolr', 'timing_chameleon', 'timing_mako',
        'timing_jinja2', 'timing_pymongo', 'timing_redispy', 'timing_memcache',
        'timing_django_templates'
    ]

    for mod in timing_modules:
        min_time = config['timing'].get(mod.replace("timing_", '').lower())
        if min_time is not False:
            log.debug('%s slow time:%s' % (mod, min_time or 'default'))
            e_callable = import_from_module(
                'appenlight_client.timing.%s:add_timing' % mod)
            if e_callable:
                if min_time:
                    e_callable(min_time)
                else:
                    e_callable()
        else:
            log.debug('not tracking slow time:%s' % mod)

    db_modules = [
        'pg8000', 'psycopg2', 'MySQLdb', 'sqlite3', 'oursql', 'pyodbc',
        'pypyodbc', 'cx_Oracle', 'kinterbasdb', 'postgresql', 'pymysql',
        'pymssql'
    ]
    import appenlight_client.timing.timing_dbapi2 as dbapi2

    for mod in db_modules:
        min_time = config['timing'].get('dbapi2_%s' % mod.lower())
        log.debug('%s dbapi query time:%s' % (mod, min_time or 'default'))
        if min_time is not False:
            if mod == 'sqlite3' and not min_time:
                continue
            elif min_time:
                dbapi2.add_timing(mod, min_time)
            else:
                dbapi2.add_timing(mod)