$38 GRAYBYTE WORDPRESS FILE MANAGER $52

SERVER : premium201.web-hosting.com #1 SMP Wed Mar 26 12:08:09 UTC 2025
SERVER IP : 104.21.43.35 | ADMIN IP 216.73.216.157
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/opt/alt/python38/lib/python3.8/site-packages/sentry_sdk/integrations/

HOME
Current File : /opt/alt/python38/lib/python3.8/site-packages/sentry_sdk/integrations//logging.py
from __future__ import absolute_import

import logging
import datetime

from sentry_sdk.hub import Hub
from sentry_sdk.utils import (
    to_string,
    event_from_exception,
    current_stacktrace,
    capture_internal_exceptions,
)
from sentry_sdk.integrations import Integration

if False:
    from logging import LogRecord
    from typing import Any
    from typing import Dict
    from typing import Optional

DEFAULT_LEVEL = logging.INFO
DEFAULT_EVENT_LEVEL = logging.ERROR

_IGNORED_LOGGERS = set(["sentry_sdk.errors"])


def ignore_logger(name):
    # type: (str) -> None
    """This disables the breadcrumb integration for a logger of a specific
    name.  This primary use is for some integrations to disable breadcrumbs
    of this integration.
    """
    _IGNORED_LOGGERS.add(name)


class LoggingIntegration(Integration):
    identifier = "logging"

    def __init__(self, level=DEFAULT_LEVEL, event_level=DEFAULT_EVENT_LEVEL):
        # type: (int, int) -> None
        self._handler = None
        self._breadcrumb_handler = None

        if level is not None:
            self._breadcrumb_handler = BreadcrumbHandler(level=level)

        if event_level is not None:
            self._handler = EventHandler(level=event_level)

    def _handle_record(self, record):
        # type: (LogRecord) -> None
        if self._handler is not None and record.levelno >= self._handler.level:
            self._handler.handle(record)

        if (
            self._breadcrumb_handler is not None
            and record.levelno >= self._breadcrumb_handler.level
        ):
            self._breadcrumb_handler.handle(record)

    @staticmethod
    def setup_once():
        # type: () -> None
        old_callhandlers = logging.Logger.callHandlers  # type: ignore

        def sentry_patched_callhandlers(self, record):
            # type: (Any, LogRecord) -> Any
            try:
                return old_callhandlers(self, record)
            finally:
                # This check is done twice, once also here before we even get
                # the integration.  Otherwise we have a high chance of getting
                # into a recursion error when the integration is resolved
                # (this also is slower).
                if record.name not in _IGNORED_LOGGERS:
                    integration = Hub.current.get_integration(LoggingIntegration)
                    if integration is not None:
                        integration._handle_record(record)

        logging.Logger.callHandlers = sentry_patched_callhandlers  # type: ignore


def _can_record(record):
    # type: (LogRecord) -> bool
    return record.name not in _IGNORED_LOGGERS


def _breadcrumb_from_record(record):
    # type: (LogRecord) -> Dict[str, Any]
    return {
        "ty": "log",
        "level": _logging_to_event_level(record.levelname),
        "category": record.name,
        "message": record.message,
        "timestamp": datetime.datetime.fromtimestamp(record.created),
        "data": _extra_from_record(record),
    }


def _logging_to_event_level(levelname):
    # type: (str) -> str
    return {"critical": "fatal"}.get(levelname.lower(), levelname.lower())


COMMON_RECORD_ATTRS = frozenset(
    (
        "args",
        "created",
        "data",
        "exc_info",
        "exc_text",
        "filename",
        "funcName",
        "levelname",
        "levelno",
        "linenno",
        "lineno",
        "message",
        "module",
        "msecs",
        "msg",
        "name",
        "pathname",
        "process",
        "processName",
        "relativeCreated",
        "stack",
        "tags",
        "thread",
        "threadName",
    )
)


def _extra_from_record(record):
    # type: (LogRecord) -> Dict[str, None]
    return {
        k: v
        for k, v in vars(record).items()
        if k not in COMMON_RECORD_ATTRS and not k.startswith("_")
    }


class EventHandler(logging.Handler, object):
    def emit(self, record):
        # type: (LogRecord) -> Any
        with capture_internal_exceptions():
            self.format(record)
            return self._emit(record)

    def _emit(self, record):
        # type: (LogRecord) -> None
        if not _can_record(record):
            return

        hub = Hub.current
        if hub.client is None:
            return

        hint = None  # type: Optional[Dict[str, Any]]
        client_options = hub.client.options

        # exc_info might be None or (None, None, None)
        if record.exc_info is not None and record.exc_info[0] is not None:
            event, hint = event_from_exception(
                record.exc_info,
                client_options=client_options,
                mechanism={"type": "logging", "handled": True},
            )
        elif record.exc_info and record.exc_info[0] is None:
            event = {}
            hint = None
            with capture_internal_exceptions():
                event["threads"] = [
                    {
                        "stacktrace": current_stacktrace(client_options["with_locals"]),
                        "crashed": False,
                        "current": True,
                    }
                ]
        else:
            event = {}

        event["level"] = _logging_to_event_level(record.levelname)
        event["logger"] = record.name
        event["logentry"] = {"message": to_string(record.msg), "params": record.args}
        event["extra"] = _extra_from_record(record)

        hub.capture_event(event, hint=hint)


# Legacy name
SentryHandler = EventHandler


class BreadcrumbHandler(logging.Handler, object):
    def emit(self, record):
        # type: (LogRecord) -> Any
        with capture_internal_exceptions():
            self.format(record)
            return self._emit(record)

    def _emit(self, record):
        # type: (LogRecord) -> None
        if not _can_record(record):
            return

        Hub.current.add_breadcrumb(
            _breadcrumb_from_record(record), hint={"log_record": record}
        )


Current_dir [ NOT WRITEABLE ] Document_root [ NOT WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
21 Mar 2024 10.24 AM
root / linksafe
0755
__pycache__
--
21 Mar 2024 10.24 AM
root / linksafe
0755
django
--
21 Mar 2024 10.24 AM
root / linksafe
0755
__init__.py
4.137 KB
5 Apr 2019 11.15 PM
root / linksafe
0644
_wsgi_common.py
3.58 KB
5 Apr 2019 11.15 PM
root / linksafe
0644
aiohttp.py
3.798 KB
5 Apr 2019 11.15 PM
root / linksafe
0644
argv.py
0.873 KB
5 Apr 2019 11.15 PM
root / linksafe
0644
atexit.py
1.455 KB
5 Apr 2019 11.15 PM
root / linksafe
0644
aws_lambda.py
6.6 KB
5 Apr 2019 11.15 PM
root / linksafe
0644
bottle.py
5.397 KB
5 Apr 2019 11.15 PM
root / linksafe
0644
celery.py
4.319 KB
5 Apr 2019 11.15 PM
root / linksafe
0644
dedupe.py
1.06 KB
5 Apr 2019 11.15 PM
root / linksafe
0644
excepthook.py
1.304 KB
5 Apr 2019 11.15 PM
root / linksafe
0644
flask.py
7.102 KB
5 Apr 2019 11.15 PM
root / linksafe
0644
gnu_backtrace.py
2.938 KB
5 Apr 2019 11.15 PM
root / linksafe
0644
logging.py
5.878 KB
5 Apr 2019 11.15 PM
root / linksafe
0644
modules.py
1.21 KB
5 Apr 2019 11.15 PM
root / linksafe
0644
pyramid.py
5.775 KB
5 Apr 2019 11.15 PM
root / linksafe
0644
rq.py
3.196 KB
5 Apr 2019 11.15 PM
root / linksafe
0644
sanic.py
6.899 KB
5 Apr 2019 11.15 PM
root / linksafe
0644
serverless.py
1.209 KB
5 Apr 2019 11.15 PM
root / linksafe
0644
stdlib.py
1.825 KB
5 Apr 2019 11.15 PM
root / linksafe
0644
threading.py
1.56 KB
5 Apr 2019 11.15 PM
root / linksafe
0644
tornado.py
6.237 KB
5 Apr 2019 11.15 PM
root / linksafe
0644
wsgi.py
7.128 KB
5 Apr 2019 11.15 PM
root / linksafe
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025 CONTACT ME
Static GIF