{"id":13468563,"url":"https://github.com/hauxir/errorpush","last_synced_at":"2025-09-21T23:53:00.285Z","repository":{"id":47193267,"uuid":"404434651","full_name":"hauxir/errorpush","owner":"hauxir","description":"Minimalist Error collection Service compatible with Rollbar clients. Sentry or Rollbar alternative.","archived":false,"fork":false,"pushed_at":"2021-10-13T11:09:22.000Z","size":25,"stargazers_count":388,"open_issues_count":0,"forks_count":9,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-09-10T02:53:21.926Z","etag":null,"topics":["error-handling","error-log","error-reporting","errors","rollbar","rollbar-alternative","rollbar-api","sentry","sentry-alternative"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hauxir.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2021-09-08T17:19:49.000Z","updated_at":"2025-06-10T20:21:11.000Z","dependencies_parsed_at":"2022-09-01T18:10:10.170Z","dependency_job_id":null,"html_url":"https://github.com/hauxir/errorpush","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hauxir/errorpush","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hauxir%2Ferrorpush","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hauxir%2Ferrorpush/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hauxir%2Ferrorpush/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hauxir%2Ferrorpush/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hauxir","download_url":"https://codeload.github.com/hauxir/errorpush/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hauxir%2Ferrorpush/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276324427,"owners_count":25622504,"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","status":"online","status_checked_at":"2025-09-21T02:00:07.055Z","response_time":72,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["error-handling","error-log","error-reporting","errors","rollbar","rollbar-alternative","rollbar-api","sentry","sentry-alternative"],"created_at":"2024-07-31T15:01:13.612Z","updated_at":"2025-09-21T23:53:00.268Z","avatar_url":"https://github.com/hauxir.png","language":"Python","readme":"# \u003cimg width=\"300\" src=\"https://user-images.githubusercontent.com/2439255/132557116-8b47acdc-d259-492f-9c36-c18ac41c8826.png\"\u003e\nMinimalist Error collection Service\n\n## Features\n- Compatible with any Rollbar client(see https://docs.rollbar.com/docs). Just change the endpoint URL to your errorpush URL.\n- Inserts all error logs into a single PostgreSQL table.\n\n## Why use this over Sentry/Rollbar?\n- Instant setup\n- Free\n- No rate limiting\n- When you don't need all the bells and whistles: just want to log all errors into a database.\n- Flexibility - use whatever you want to query the PostgresQL table for errors\n\n## Running\nerrorpush requires docker\n\n```bash\ndocker run -p 5000:5000 -e ACCESS_TOKEN=\u003cyour_access_token_of_choice\u003e -e POSTGRES_URI=postgres://username:password@yourhost.com/yourdb hauxir/errorpush:latest\n```\nThat's it, just set up a reverse proxy and point your rollbar client to your server.\n\n## Example Query\n```sql\nSELECT error_id, Max(( ( BODY -\u003e\u003e 'trace' ) :: jsonb -\u003e\u003e 'exception' ) :: jsonb -\u003e\u003e 'class') AS EXCEPTION, Max(( ( BODY -\u003e\u003e 'message' ) :: jsonb -\u003e\u003e 'body' )) AS message, Count(*), Max(timestamp) AS last_seen FROM   errors GROUP  BY error_id ORDER  BY last_seen DESC;\n```\n```\n             error_id             | exception |   message    | count |         last_seen          \n----------------------------------+-----------+--------------+-------+----------------------------\n 8cca0a18f56269b5a5243f7cc2906f79 | NameError |              |     4 | 2021-09-08 18:34:05.751548\n b6012c1be2bef37f570077f2ce2e908b |           |              |     2 | 2021-09-08 18:15:09.944348\n 5acf76ad5f327d811ca9282b5d5a933a |           | Hello world! |     3 | 2021-09-08 18:15:09.944308\n 794ef3b916db810d9162ad54aff32a14 |           | HEY          |     1 | 2021-09-08 18:12:19.705926\n(4 rows)\n```\n\n## Metabase\nYou can use [metabase](https://github.com/metabase/metabase) to visualize the data.\n\n \u003cimg width=\"1432\" alt=\"Screenshot 2021-09-11 at 00 14 58\" src=\"https://user-images.githubusercontent.com/2439255/132930119-86a6debe-0b56-43a4-b709-c64d4df24194.png\"\u003e\n \nPostgreSQL view for the above image: \n```sql\ncreate view error_report as \nselect \n  error_id, \n  max(\n    concat(\n      coalesce(\n        (\n          (body -\u003e\u003e 'trace'):: jsonb -\u003e\u003e 'exception'\n        ):: jsonb -\u003e\u003e 'class', \n        'Error'\n      ), \n      ': ', \n      (\n        (body -\u003e\u003e 'trace'):: jsonb -\u003e\u003e 'exception'\n      ):: jsonb -\u003e\u003e 'message', \n      (body -\u003e\u003e 'message'):: jsonb -\u003e\u003e 'body'\n    )\n  ) as error, \n  count(*) as occurences, \n  max(timestamp) as last_seen, \n  max(\n    array_to_string(\n      array(\n        select \n          concat(\n            el -\u003e\u003e 'filename', ':', el -\u003e\u003e 'lineno'\n          ) \n        from \n          jsonb_array_elements(\n            (\n              (body -\u003e\u003e 'trace'):: jsonb -\u003e\u003e 'frames'\n            ):: jsonb\n          ) as el \n        limit \n          4\n      ), \n      ', '\n    )\n  ) as trace, \n  max(environment) as environment, \n  max(custom -\u003e\u003e 'revision') as revision \nfrom \n  errors \ngroup by \n  error_id \norder by \n  last_seen desc;\n  ```\n","funding_links":[],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhauxir%2Ferrorpush","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhauxir%2Ferrorpush","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhauxir%2Ferrorpush/lists"}