Пример #1
0
 def _initialize_sentry(self):
     """If running a cloud crawl, we can pull the sentry endpoint
     and related config varibles from the environment"""
     self._breadcrumb_handler = BreadcrumbHandler(
         level=self._log_level_sentry_breadcrumb)
     self._event_handler = EventHandler(level=self._log_level_sentry_event)
     sentry_sdk.init(dsn=self._sentry_dsn,
                     before_send=self._sentry_before_send)
     with sentry_sdk.configure_scope() as scope:
         if self._crawl_context:
             scope.set_tag(
                 'CRAWL_REFERENCE', '%s/%s' %
                 (self._crawl_context.get('s3_bucket', 'UNKNOWN'),
                  self._crawl_context.get('s3_directory', 'UNKNOWN')))
Пример #2
0
 def _initialize_sentry(self):
     """If running a cloud crawl, we can pull the sentry endpoint
     and related config varibles from the environment"""
     self._breadcrumb_handler = BreadcrumbHandler(
         level=self._log_level_sentry_breadcrumb)
     self._event_handler = EventHandler(level=self._log_level_sentry_event)
     sentry_sdk.init(dsn=self._sentry_dsn,
                     before_send=self._sentry_before_send)
     with sentry_sdk.configure_scope() as scope:
         if self._crawl_reference:
             scope.set_tag(
                 "CRAWL_REFERENCE",
                 self._crawl_reference,
             )
Пример #3
0
def init_log():
    logging.getLogger("chardet").setLevel(logging.WARNING)
    logging.getLogger("urllib3").setLevel(logging.WARNING)

    class InterceptHandler(logging.Handler):
        def emit(self, record):
            # Retrieve context where the logging call occurred, this happens to be in the 6th frame upward
            logger_opt = logger.opt(depth=6, exception=record.exc_info)
            logger_opt.log(record.levelname, record.getMessage())

    logging.basicConfig(handlers=[InterceptHandler()], level=logging.DEBUG)

    logger.add(EventHandler(), format="{message}", level="ERROR")
    logger.add(BreadcrumbHandler(), format="{message}", level="ERROR")
    logger.add("logs/spider.log",
               rotation="1 day",
               retention="5 days",
               enqueue=True)
    if core_env == "dev":
        logger.remove(0)
        logger.add(sys.stderr, level="TRACE")
Пример #4
0
def configure():
    # noinspection PyArgumentList
    logging.basicConfig(handlers=[InterceptHandler()], level=0)

    # monkey patching
    logger.__class__.debug = debug
    logger.__class__.warning = warning

    logger.remove()

    if Sentry.dsn:
        logger.add(
            BreadcrumbHandler(level=logging.DEBUG),
            level=logging.DEBUG,
            format="{name} - {message}",
            backtrace=False,
            diagnose=False,
        )
        logger.add(
            EventHandler(level=logging.ERROR),
            level=logging.ERROR,
            format="{name} - {message}",
            backtrace=False,
            diagnose=False,
        )

    for handler in LoggingHandlers:
        logger.add(**handler)

    log_filter.add_filter("discord.client", "Dispatching event ")
    log_filter.add_filter("discord.gateway", "WebSocket Event: ")
    log_filter.add_filter("discord.gateway", "websocket alive with sequence")
    log_filter.add_filter("discord.gateway", "Unknown event ")
    log_filter.add_filter("discord.http", "has received")
    log_filter.add_filter("discord.http", "has returned")
    log_filter.add_filter("PIL.TiffImagePlugin", "tag: ")
Пример #5
0
from nonebot.log import logger
from sentry_sdk.integrations.logging import EventHandler, BreadcrumbHandler

from .config import Config

driver = get_driver()
global_config = driver.config
config = Config(**global_config.dict())

assert config.sentry_dsn, "Sentry DSN must provided!"

sentry_sdk.init(**{
    key[7:]: value
    for key, value in config.dict().items() if key != "sentry_environment"
},
                environment=config.sentry_environment or driver.env,
                default_integrations=False)


class Filter:
    def __init__(self, level="INFO") -> None:
        self.level = level

    def __call__(self, record):
        levelno = logger.level(self.level).no
        return record["level"].no >= levelno


logger.add(EventHandler("ERROR"), filter=Filter("ERROR"))
logger.add(BreadcrumbHandler("INFO"), filter=Filter("INFO"))