Current Path: > > opt > cloudlinux > venv > lib > python3.11 > site-packages > sentry_sdk > integrations
Operation : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 Software : Apache Server IP : 162.0.232.56 | Your IP: 216.73.216.111 Domains : 1034 Domain(s) Permission : [ 0755 ]
Name | Type | Size | Last Modified | Actions |
---|---|---|---|---|
__pycache__ | Directory | - | - | |
django | Directory | - | - | |
grpc | Directory | - | - | |
opentelemetry | Directory | - | - | |
redis | Directory | - | - | |
spark | Directory | - | - | |
__init__.py | File | 6827 bytes | April 17 2025 13:10:59. | |
_wsgi_common.py | File | 4537 bytes | April 17 2025 13:10:59. | |
aiohttp.py | File | 11553 bytes | April 17 2025 13:10:59. | |
argv.py | File | 963 bytes | April 17 2025 13:10:59. | |
arq.py | File | 6737 bytes | April 17 2025 13:10:59. | |
asgi.py | File | 11821 bytes | April 17 2025 13:10:59. | |
asyncio.py | File | 3049 bytes | April 17 2025 13:10:59. | |
atexit.py | File | 1846 bytes | April 17 2025 13:10:59. | |
aws_lambda.py | File | 15815 bytes | April 17 2025 13:10:59. | |
beam.py | File | 5689 bytes | April 17 2025 13:10:59. | |
boto3.py | File | 4542 bytes | April 17 2025 13:10:59. | |
bottle.py | File | 6471 bytes | April 17 2025 13:10:59. | |
celery.py | File | 19100 bytes | April 17 2025 13:10:59. | |
chalice.py | File | 4769 bytes | April 17 2025 13:10:59. | |
cloud_resource_context.py | File | 6755 bytes | April 17 2025 13:10:59. | |
dedupe.py | File | 1184 bytes | April 17 2025 13:10:59. | |
excepthook.py | File | 2260 bytes | April 17 2025 13:10:59. | |
executing.py | File | 2041 bytes | April 17 2025 13:10:59. | |
falcon.py | File | 7984 bytes | April 17 2025 13:10:59. | |
fastapi.py | File | 4496 bytes | April 17 2025 13:10:59. | |
flask.py | File | 7907 bytes | April 17 2025 13:10:59. | |
gcp.py | File | 8213 bytes | April 17 2025 13:10:59. | |
gnu_backtrace.py | File | 2930 bytes | April 17 2025 13:10:59. | |
httpx.py | File | 5005 bytes | April 17 2025 13:10:59. | |
huey.py | File | 4700 bytes | April 17 2025 13:10:59. | |
logging.py | File | 9181 bytes | April 17 2025 13:10:59. | |
loguru.py | File | 3051 bytes | April 17 2025 13:10:59. | |
modules.py | File | 2110 bytes | April 17 2025 13:10:59. | |
pure_eval.py | File | 4554 bytes | April 17 2025 13:10:59. | |
pymongo.py | File | 6007 bytes | April 17 2025 13:10:59. | |
pyramid.py | File | 7442 bytes | April 17 2025 13:10:59. | |
quart.py | File | 7377 bytes | April 17 2025 13:10:59. | |
rq.py | File | 5411 bytes | April 17 2025 13:10:59. | |
sanic.py | File | 11326 bytes | April 17 2025 13:10:59. | |
serverless.py | File | 1975 bytes | April 17 2025 13:10:59. | |
socket.py | File | 2945 bytes | April 17 2025 13:10:59. | |
sqlalchemy.py | File | 4244 bytes | April 17 2025 13:10:59. | |
starlette.py | File | 23211 bytes | April 17 2025 13:10:59. | |
starlite.py | File | 10089 bytes | April 17 2025 13:10:59. | |
stdlib.py | File | 8251 bytes | April 17 2025 13:10:59. | |
threading.py | File | 2937 bytes | April 17 2025 13:10:59. | |
tornado.py | File | 7342 bytes | April 17 2025 13:10:59. | |
trytond.py | File | 1745 bytes | April 17 2025 13:10:59. | |
wsgi.py | File | 9581 bytes | April 17 2025 13:10:59. |
from __future__ import absolute_import import logging import datetime from fnmatch import fnmatch 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 from sentry_sdk._compat import iteritems from sentry_sdk._types import TYPE_CHECKING if TYPE_CHECKING: 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 LOGGING_TO_EVENT_LEVEL = { logging.NOTSET: "notset", logging.DEBUG: "debug", logging.INFO: "info", logging.WARN: "warning", # WARN is same a WARNING logging.WARNING: "warning", logging.ERROR: "error", logging.FATAL: "fatal", logging.CRITICAL: "fatal", # CRITICAL is same as FATAL } # Capturing events from those loggers causes recursion errors. We cannot allow # the user to unconditionally create events from those loggers under any # circumstances. # # Note: Ignoring by logger name here is better than mucking with thread-locals. # We do not necessarily know whether thread-locals work 100% correctly in the user's environment. _IGNORED_LOGGERS = set( ["sentry_sdk.errors", "urllib3.connectionpool", "urllib3.connection"] ) def ignore_logger( name, # type: str ): # type: (...) -> None """This disables recording (both in breadcrumbs and as events) calls to a logger of a specific name. Among other uses, many of our integrations use this to prevent their actions being recorded as breadcrumbs. Exposed to users as a way to quiet spammy loggers. :param name: The name of the logger to ignore (same string you would pass to ``logging.getLogger``). """ _IGNORED_LOGGERS.add(name) class LoggingIntegration(Integration): identifier = "logging" def __init__(self, level=DEFAULT_LEVEL, event_level=DEFAULT_EVENT_LEVEL): # type: (Optional[int], Optional[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 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 class _BaseHandler(logging.Handler, object): COMMON_RECORD_ATTRS = frozenset( ( "args", "created", "exc_info", "exc_text", "filename", "funcName", "levelname", "levelno", "linenno", "lineno", "message", "module", "msecs", "msg", "name", "pathname", "process", "processName", "relativeCreated", "stack", "tags", "thread", "threadName", "stack_info", ) ) def _can_record(self, record): # type: (LogRecord) -> bool """Prevents ignored loggers from recording""" for logger in _IGNORED_LOGGERS: if fnmatch(record.name, logger): return False return True def _logging_to_event_level(self, record): # type: (LogRecord) -> str return LOGGING_TO_EVENT_LEVEL.get( record.levelno, record.levelname.lower() if record.levelname else "" ) def _extra_from_record(self, record): # type: (LogRecord) -> Dict[str, None] return { k: v for k, v in iteritems(vars(record)) if k not in self.COMMON_RECORD_ATTRS and (not isinstance(k, str) or not k.startswith("_")) } class EventHandler(_BaseHandler): """ A logging handler that emits Sentry events for each log record Note that you do not have to use this class if the logging integration is enabled, which it is by default. """ 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 self._can_record(record): return hub = Hub.current if hub.client is None: return client_options = hub.client.options # exc_info might be None or (None, None, None) # # exc_info may also be any falsy value due to Python stdlib being # liberal with what it receives and Celery's billiard being "liberal" # with what it sends. See # https://github.com/getsentry/sentry-python/issues/904 if record.exc_info 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 = {} with capture_internal_exceptions(): event["threads"] = { "values": [ { "stacktrace": current_stacktrace( include_local_variables=client_options[ "include_local_variables" ], max_value_length=client_options["max_value_length"], ), "crashed": False, "current": True, } ] } else: event = {} hint = {} hint["log_record"] = record event["level"] = self._logging_to_event_level(record) event["logger"] = record.name # Log records from `warnings` module as separate issues record_caputured_from_warnings_module = ( record.name == "py.warnings" and record.msg == "%s" ) if record_caputured_from_warnings_module: # use the actual message and not "%s" as the message # this prevents grouping all warnings under one "%s" issue msg = record.args[0] # type: ignore event["logentry"] = { "message": msg, "params": (), } else: event["logentry"] = { "message": to_string(record.msg), "params": record.args, } event["extra"] = self._extra_from_record(record) hub.capture_event(event, hint=hint) # Legacy name SentryHandler = EventHandler class BreadcrumbHandler(_BaseHandler): """ A logging handler that records breadcrumbs for each log record. Note that you do not have to use this class if the logging integration is enabled, which it is by default. """ 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 self._can_record(record): return Hub.current.add_breadcrumb( self._breadcrumb_from_record(record), hint={"log_record": record} ) def _breadcrumb_from_record(self, record): # type: (LogRecord) -> Dict[str, Any] return { "type": "log", "level": self._logging_to_event_level(record), "category": record.name, "message": record.message, "timestamp": datetime.datetime.utcfromtimestamp(record.created), "data": self._extra_from_record(record), }
SILENT KILLER Tool