{"id":16624303,"url":"https://github.com/dcramer/sentry-old","last_synced_at":"2025-03-23T14:31:17.723Z","repository":{"id":1475509,"uuid":"1718000","full_name":"dcramer/sentry-old","owner":"dcramer","description":"(In Development) Sentry 2.x is a realtime event logging and aggregation platform","archived":false,"fork":false,"pushed_at":"2011-09-11T18:18:34.000Z","size":2610,"stargazers_count":40,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-15T15:17:41.374Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dcramer.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-05-08T07:34:46.000Z","updated_at":"2023-09-08T16:29:17.000Z","dependencies_parsed_at":"2022-07-29T18:39:46.841Z","dependency_job_id":null,"html_url":"https://github.com/dcramer/sentry-old","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcramer%2Fsentry-old","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcramer%2Fsentry-old/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcramer%2Fsentry-old/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcramer%2Fsentry-old/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dcramer","download_url":"https://codeload.github.com/dcramer/sentry-old/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245115794,"owners_count":20563237,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-12T03:45:54.514Z","updated_at":"2025-03-23T14:31:16.864Z","avatar_url":"https://github.com/dcramer.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"======\nSentry\n======\n\n**SENTRY 2.0 (this) IS IN DEVELOPMENT AND SHOULD NOT BE USED IN PRODUCTION**\n\nSentry provides you with a generic interface to view and interact with your error logs. By\ndefault, it will record various events to a datastore. With this\nit allows you to interact and view near real-time information to discover issues and more\neasily trace them in your application.\n\n(The next chunk is a lie, but planned)\n\nBuilt-in support includes:\n\n- Drop-in Django support\n- WSGI middleware for error logging\n- Query logging for psycopg2 and MySQLdb\n- ``logging`` and ``logbook`` modules\n\nIssue tracker: http://github.com/dcramer/django-sentry/issues\n\n==========\nBasic Docs\n==========\n\nWe'll move all of this into the Sphinx docs once APIs are finalized.\n\n-------------\nRunning tests\n-------------\n\nSentry uses Nose, which will automatically be installed (along with unittest2) if you use\nthe ``test`` command.\n\n::\n\n    mkvirtualenv sentry\n    python setup.py test\n\n----------------------\nRunning ``sentry.web``\n----------------------\n\nThe server component of Sentry, called ``sentry.web``, can be run with the following command:\n\n::\n\n    mkvirtualenv sentry\n    python setup.py develop\n    sentry start --no-daemon --debug\n\n----------\nClient API\n----------\n\nThe client is the core of Sentry, which is composed of the ``sentry`` namespace, and its many\nsubmodules. There are a two key things that make up the client:\n\n* ``sentry.client``\n* ``sentry.events``\n\nThese components are also used within ``sentry.web`` as well.\n\nTo capture an error, Sentry provides the ``capture`` function:\n\n::\n\n    from sentry import capture\n    capture('sentry.events.Exception', exc_info=exc_info)\n\nFor built-in events, you can drop the module namespace:\n\n::\n\n    from sentry import capture\n    capture('Exception', exc_info=exc_info)\n\nOne of the big changes from Sentry 1.x to 2.x, is the ability to record durations (in ms) with events:\n\n::\n\n    from sentry import capture\n    capture('Query', query='SELECT * FROM table', engine='psycopg2', time_spent=36)\n\nThe other major change, is that labels like \"logger\", and \"server\" are now part of the tagging architecture:\n\n::\n\n    from sentry import capture\n    capture('Message', message='hello world', tags=[('logger', 'root'), ('level', 'error'), ('url', 'http://example.com')])\n\n----------\nFilter API\n----------\n\nThe filter API is designed to allow dynamic filters based on tags. They are composed of two pieces: a processor and a renderer. The renderer simply tells Sentry how it needs to be displayed in the filter list (e.g. a select widget with FOO choices, a search input, etc). \n\nThe majority of this code lies within ``sentry.web.filters``, and are specified as part of the ``SLICES`` runtime configuration.\n\n------------\nWhat's Left?\n------------\n\nThis is a rough list of features/APIs which need to be completed (*some* of this is better described in the issue tracker):\n\n* Runtime validation of settings (ensure events and filters are valid importables, etc.)\n\n* Exception event handler needs to have an intelligent hash\n\n* Processor API (for post-processing messages before they get sent to the server)\n\n  * Should be an ordered tuple specified in config\n  \n  * Should be able to manipulate all of ``data`` (so you can clean messages, or add additional metadata)\n\n* Filter API\n\n  * Needs to handle sorting+filtering with denormalized indexes\n\n* Plugin API\n\n* Dashboard view needs finalized\n\n  * Need to properly index/query on sort+tag combinations\n\n  * Implement pagination\n\n* Should consider supporting better interval dashboards. e.g. last 24 hours, vs last 15 minutes\n\n* Django Integration (some draft code is present)\n\n* SQLAlchemy Backend\n\n* Test coverage\n\n  * Models and Backends\n  \n  * Clients\n\n* Decide on final version of client authentication API\n\n  * Probably don't need it to be so secure (nonce is extra load)\n\n  * Support should be considered for having multiple \"users\". A good example use case is if a consulting firm uses a single\n    Sentry server and has many clients, but then decides one client's access needs revoked from recording to the logger.\n\n* Make reporting extendable\n\n  * The email reporting which was available in Sentry 1.x should simply be a builtin reporting option.\n\n  * Add an IRC extension?\n\n  * Add a network Growl extension?\n\n  * Add an IM extension?","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdcramer%2Fsentry-old","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdcramer%2Fsentry-old","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdcramer%2Fsentry-old/lists"}