示例#1
0
文件: log.py 项目: hbrls/probe_old
def get_logentries_handler():
    import os
    from logentries import LogentriesHandler
    handler = LogentriesHandler(os.getenv("LOGENTRIES_TOKEN"))

    handler.setFormatter(formatter)
    handler.setLevel(logging.INFO)
    return handler
示例#2
0
class LogentriesExtension(object):
    def __init__(self, token):
        self.token = token
        root = logging.getLogger()

        self.handler = LogentriesHandler(token)

        spider_id = os.environ.get('SCRAPY_SPIDER_ID')
        project_id = os.environ.get('SCRAPY_PROJECT_ID')
        job_id = os.environ.get('SCRAPY_JOB_ID')

        formatted = False
        if job_id is not None:
            formatted = True
            filter = ScrapingHubFilter({
                'project_id': project_id,
                'spider_id': spider_id,
                'job_id': job_id,
            })
            format = "%(name)s - %(levelname)s - [project_id=%(project_id)s spider_id=%(spider_id)s job_id=%(job_id)s] %(message)s"
            formatter = logging.Formatter(format)

            self.handler.addFilter(filter)
            self.handler.setFormatter(formatter)

        root.addHandler(self.handler)

        # NCA: not sure we want sensitive information like the token in the logs
        #      Maybe use debug log level instead
        if formatted:
            logger.info(
                'Logentries activated with token {} and custom SH format'.
                format(token))
        else:
            logger.info(
                'Logentries activated with token {} and no custom SH format'.
                format(token))

    @classmethod
    def from_crawler(cls, crawler):
        # first check if the extension should be enabled and raise
        # NotConfigured otherwise
        token = crawler.settings.get('LOGENTRIES_TOKEN')
        if not token:
            raise NotConfigured

        # instantiate the extension object
        ext = cls(token)

        # return the extension object
        return ext
class LogentriesExtension(object):

    def __init__(self, token):
        self.token = token
        root = logging.getLogger()

        self.handler = LogentriesHandler(token)

        spider_id = os.environ.get('SCRAPY_SPIDER_ID')
        project_id = os.environ.get('SCRAPY_PROJECT_ID')
        job_id = os.environ.get('SCRAPY_JOB_ID')

        formatted = False
        if job_id is not None:
            formatted = True
            filter = ScrapingHubFilter({
                        'project_id': project_id,
                       'spider_id': spider_id,
                       'job_id': job_id,
                       })
            format = "%(name)s - %(levelname)s - [project_id=%(project_id)s spider_id=%(spider_id)s job_id=%(job_id)s] %(message)s"
            formatter = logging.Formatter(format)

            self.handler.addFilter(filter)
            self.handler.setFormatter(formatter)

        root.addHandler(self.handler)

        # NCA: not sure we want sensitive information like the token in the logs
        #      Maybe use debug log level instead 
        if formatted:
            logger.info('Logentries activated with token {} and custom SH format'.format(token))
        else:
            logger.info('Logentries activated with token {} and no custom SH format'.format(token))

    @classmethod
    def from_crawler(cls, crawler):
        # first check if the extension should be enabled and raise
        # NotConfigured otherwise
        token = crawler.settings.get('LOGENTRIES_TOKEN')
        if not token:
            raise NotConfigured


        # instantiate the extension object
        ext = cls(token)


        # return the extension object
        return ext
示例#4
0
def init():
    '''
    Registers the msg-logger
    '''
    handler = None
    if os.environ.get('LOGENTRIES_TOKEN') is not None:
        handler = LogentriesHandler(os.environ.get('LOGENTRIES_TOKEN'),
                                    format=CustomFormatter())
    else:
        handler = logging.StreamHandler()
        handler.setFormatter(CustomFormatter())

    logger = logging.getLogger('msg-logger')
    logger.setLevel(logging.INFO)
    logger.addFilter(CustomFilter())
    logger.addHandler(handler)
示例#5
0
def setup_logging(loggers_and_levels, logentries_id=None):
    log = logging.getLogger('logentries')
    log.setLevel(logging.INFO)
    logentries_handler = LogentriesHandler(logentries_id)
    handler = logging.StreamHandler()

    FORMAT = "%(asctime)s:%(levelname)s:%(name)s:%(message)s"
    formatter = logging.Formatter(fmt=FORMAT)
    handler.setFormatter(formatter)
    logentries_handler.setFormatter(formatter)

    log.addHandler(handler)
    log.addHandler(logentries_handler)
    for logger, level in loggers_and_levels:
        logger.setLevel(level)
        logger.addHandler(handler)
        logger.addHandler(logentries_handler)
示例#6
0
def get_custom_logger(name):
    """ Set up loggers according to environment and configuration. """

    file = app.config['LOGGER_FILEPATH']
    token = app.config['LOGENTRIES_TOKEN']
    level = DEBUG if app.config['DEBUG'] else INFO
    context = app.config['ENVIRONMENT']

    log = getLogger(name)
    log.setLevel(level)

    # shared by all handlers
    formatter = Formatter(
        '[%(asctime)s] '
        '[%(process)d] '
        '[%(name)s] '
        '[%(levelname)s] '
        '%(message)s'
    )

    if context != 'testing' and file:
        file = FileHandler(file, mode='a+')
        file.setLevel(level)
        file.setFormatter(formatter)
        log.addHandler(file)

    if context == 'development':
        console = StreamHandler(stream=stdout)
        console.setLevel(level)
        console.setFormatter(formatter)
        log.addHandler(console)

    if context != 'testing' and token:
        logentries = LogentriesHandler(token)
        logentries.setLevel(level)
        logentries.setFormatter(formatter)
        log.addHandler(logentries)

    return log
示例#7
0
syslog_formatter = logging.Formatter('%(asctime)s ' + syslog_hostname +
                                     ' %(name)s: %(message)s',
                                     datefmt='%b %d %H:%M:%S')

syslog_address = os.getenv('SYSLOG_ADDRESS', '')
if syslog_address:
    syslog_host, syslog_udp_port = syslog_address.split(":")
    syslog_handler = SysLogHandler(address=(syslog_host, int(syslog_udp_port)))
    syslog_handler.setFormatter(syslog_formatter)
    syslog_handler.setLevel(syslog_logging_level)
    logging_handlers.append(syslog_handler)

logentries_token = os.getenv('LOGENTRIES_TOKEN', '')
if logentries_token:
    logentries_handler = LogentriesHandler(logentries_token)
    logentries_handler.setFormatter(syslog_formatter)
    logentries_handler.setLevel(syslog_logging_level)
    logging_handlers.append(logentries_handler)

logging.basicConfig(
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S',
    level=logging.DEBUG,
    handlers=logging_handlers)


def main():
    botan_token = os.getenv('BOTAN_TOKEN', '')
    sc_auth_token = os.environ['SC_AUTH_TOKEN']
    store_chat_id = int(os.getenv('STORE_CHAT_ID', '0'))
    no_flood_chat_ids = list(
示例#8
0
                                            request.remote_addr)
        if current_user.is_anonymous():
            log_record.user_id = 'guest'
        else:
            log_record.user_id = current_user.get_id()

        return True


# Use said info
log_format = ("%(utcnow)s\tl=%(levelname)s\tu=%(user_id)s\tip=%(ip)s"
              "\tm=%(method)s\turl=%(url)s\tmsg=%(message)s")
formatter = logging.Formatter(log_format)

# - Handlers
# -- Stream handler
streamHandler = logging.StreamHandler()
streamHandler.setLevel(logging.INFO)
streamHandler.setFormatter(formatter)

# -- LogEntries handler
leHandler = LogentriesHandler(app.config['LOGENTRIES_TOKEN'])
leHandler.setLevel(logging.INFO)
leHandler.setFormatter(formatter)

# - Logger
log = app.logger
log.setLevel(logging.DEBUG)
log.addFilter(ContextualFilter())
log.addHandler(streamHandler)
log.addHandler(leHandler)