mirror of
https://github.com/jlengrand/bugsink.git
synced 2026-03-10 08:01:17 +00:00
SDK instructions factored out to separate package
This commit is contained in:
@@ -56,6 +56,7 @@ INSTALLED_APPS = [
|
||||
|
||||
'tailwind', # As currently set up, this is also needed in production (templatetags)
|
||||
'admin_auto_filters',
|
||||
'sdkconf',
|
||||
]
|
||||
|
||||
BUGSINK_APPS = [
|
||||
|
||||
@@ -34,9 +34,7 @@
|
||||
Install the SDK using pip:
|
||||
</div>
|
||||
|
||||
<div class="mt-4">
|
||||
<div class="p-4 mt-4 bg-slate-50 syntax-coloring"><pre><span>pip install sentry-sdk</span></pre></div>
|
||||
</div>
|
||||
{{ install }}
|
||||
|
||||
<h2 class="mt-8 text-2xl font-bold">Step 2: Initialize the SDK</h2>
|
||||
|
||||
@@ -44,69 +42,8 @@
|
||||
Initialize the SDK with your DSN:
|
||||
</div>
|
||||
|
||||
{% comment %} add hoc construction of highlighted code:
|
||||
from pygments import highlight
|
||||
from pygments.lexers import PythonLexer
|
||||
from pygments.formatters import HtmlFormatter
|
||||
lexer = PythonLexer()
|
||||
code = """import sentry_sdk
|
||||
sentry_sdk.init(
|
||||
"REPLACEME",
|
||||
{{ conf }}
|
||||
|
||||
# The SDK's default is to not send PII; for a SaaS solution this is probably
|
||||
# the right choice, but when you're using Bugsink (i.e. self-hosted), it's
|
||||
# more likely that you want to send everything (and e.g. be able to see
|
||||
# which user was affected by a certain event). Uncomment the following line
|
||||
# to send PII.
|
||||
# send_default_pii=True,
|
||||
|
||||
# The SDK's default is to be quite conservative with the nr of local
|
||||
# variables it sends per frame (the default is is 10). If you want to see
|
||||
# more, you may either proceed with the monkey patching described in the
|
||||
# issue below, or set max_request_body_size to "always" (which will send
|
||||
# everything). Note that this may lead to very large messages, which may be
|
||||
# dropped by the server (but the server is under your control, so you can
|
||||
# change that). see https://github.com/getsentry/sentry-python/issues/377
|
||||
# max_request_body_size="always",
|
||||
|
||||
# Setting up the release is highly recommended. The SDK will try to infer
|
||||
# it, but explicitly setting it is more reliable.
|
||||
# release=...,
|
||||
|
||||
# Bugsink intentionally does not support traces. No need to send them then
|
||||
traces_sample_rate=0,
|
||||
)"""
|
||||
print(highlight(code, lexer, HtmlFormatter()).replace("highlight", "p-4 mt-4 bg-slate-50 syntax-coloring").replace("REPLACEME", "{{ project.dsn }}"))
|
||||
{% endcomment %}
|
||||
|
||||
<div class="p-4 mt-4 bg-slate-50 syntax-coloring"><pre><span></span><span class="kn">import</span> <span class="nn">sentry_sdk</span>
|
||||
<span class="n">sentry_sdk</span><span class="o">.</span><span class="n">init</span><span class="p">(</span>
|
||||
<span class="s2">"{{ project.dsn }}"</span><span class="p">,</span>
|
||||
|
||||
<span class="c1"># The SDK's default is to not send PII; for a SaaS solution this is probably</span>
|
||||
<span class="c1"># the right choice, but when you're using Bugsink (i.e. self-hosted), it's</span>
|
||||
<span class="c1"># more likely that you want to send everything (and e.g. be able to see</span>
|
||||
<span class="c1"># which user was affected by a certain event). Uncomment the following line</span>
|
||||
<span class="c1"># to send PII.</span>
|
||||
<span class="c1"># send_default_pii=True,</span>
|
||||
|
||||
<span class="c1"># The SDK's default is to be quite conservative with the nr of local</span>
|
||||
<span class="c1"># variables it sends per frame (the default is is 10). If you want to see</span>
|
||||
<span class="c1"># more, you may either proceed with the monkey patching described in the</span>
|
||||
<span class="c1"># issue below, or set max_request_body_size to "always" (which will send</span>
|
||||
<span class="c1"># everything). Note that this may lead to very large messages, which may be</span>
|
||||
<span class="c1"># dropped by the server (but the server is under your control, so you can</span>
|
||||
<span class="c1"># change that). see https://github.com/getsentry/sentry-python/issues/377</span>
|
||||
<span class="c1"># max_request_body_size="always",</span>
|
||||
|
||||
<span class="c1"># Setting up the release is highly recommended. The SDK will try to infer</span>
|
||||
<span class="c1"># it, but explicitly setting it is more reliable.</span>
|
||||
<span class="c1"># release=...,</span>
|
||||
|
||||
<span class="c1"># Bugsink intentionally does not support traces. No need to send them then.</span>
|
||||
<span class="n">traces_sample_rate</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
</pre></div>
|
||||
<div class="mt-4">
|
||||
For integration-specific (Django, Flask, etc) notes, see the <a href="https://docs.sentry.io/platforms/python/" class="text-cyan-500 font-bold" target="_blank">Sentry documentation</a>.
|
||||
</div>
|
||||
@@ -117,8 +54,7 @@ print(highlight(code, lexer, HtmlFormatter()).replace("highlight", "p-4 mt-4 bg-
|
||||
Verify the setup by sending an event:
|
||||
</div>
|
||||
|
||||
<div class="p-4 mt-4 bg-slate-50 syntax-coloring"><pre><span></span><span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Raised Exception on purpose to send it to Bugsink"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
{{ verify }}
|
||||
|
||||
<div class="mt-4">
|
||||
Your event should now appear in the <a href="{% url "issue_list_open" project_pk=project.pk %}" class="text-cyan-500 font-bold">list of open issues</a>.
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
from datetime import timedelta
|
||||
|
||||
from pygments import highlight
|
||||
from pygments.lexers import PythonLexer, TextLexer
|
||||
from pygments.formatters import HtmlFormatter
|
||||
|
||||
from django.template.loader import get_template
|
||||
from django.shortcuts import render
|
||||
from django.db import models
|
||||
from django.shortcuts import redirect
|
||||
@@ -10,6 +15,7 @@ from django.contrib import messages
|
||||
from django.contrib.auth import logout
|
||||
from django.urls import reverse
|
||||
from django.utils import timezone
|
||||
from django.utils.safestring import mark_safe
|
||||
|
||||
from users.models import EmailVerification
|
||||
from teams.models import TeamMembership, Team, TeamRole
|
||||
@@ -379,6 +385,14 @@ def project_members_accept(request, project_pk):
|
||||
return render(request, "projects/project_members_accept.html", {"project": project, "membership": membership})
|
||||
|
||||
|
||||
def _sdk_code(part, context, lexer):
|
||||
template = get_template("sdkconf/python/%s" % part)
|
||||
code = template.render(context)
|
||||
|
||||
return mark_safe(
|
||||
highlight(code, lexer, HtmlFormatter()).replace("highlight", "p-4 mt-4 bg-slate-50 syntax-coloring"))
|
||||
|
||||
|
||||
@atomic_for_request_method
|
||||
def project_sdk_setup(request, project_pk):
|
||||
project = Project.objects.get(id=project_pk)
|
||||
@@ -387,6 +401,12 @@ def project_sdk_setup(request, project_pk):
|
||||
accepted=True).exists():
|
||||
raise PermissionDenied("You are not a member of this project")
|
||||
|
||||
# NOTE about lexers:: I have bugsink/pyments_extensions; but the platforms mentioned there don't necessarily map to
|
||||
# what I will make selectable here. "We'll see" whether yet another lookup dict will be needed.
|
||||
|
||||
return render(request, "projects/project_sdk_setup.html", {
|
||||
"project": project,
|
||||
"install": _sdk_code("install", {}, TextLexer()),
|
||||
"conf": _sdk_code("conf", {"dsn": project.dsn}, PythonLexer()),
|
||||
"verify": _sdk_code("verify", {}, PythonLexer()),
|
||||
})
|
||||
|
||||
@@ -15,3 +15,4 @@ monofy==1.1.*
|
||||
user_agents
|
||||
fastjsonschema
|
||||
verbose_csrf_middleware
|
||||
sdkconf
|
||||
|
||||
Reference in New Issue
Block a user