Python中如何使用Sentry进行错误日志聚合?

我拉了 sentry 的代码到了本地,怎么用 pycharm 跑呢?
python wsgi.py 不能运行。。
sentry 到底是怎么运行的呢

Python中如何使用Sentry进行错误日志聚合?
14 回复

请看官方文档 https://docs.sentry.io/server/installation/ 写的很详细


# 安装Sentry SDK
# pip install sentry-sdk

import sentry_sdk
from sentry_sdk.integrations.flask import FlaskIntegration
from sentry_sdk.integrations.django import DjangoIntegration
import logging

# 基础配置示例
def setup_sentry_basic():
    sentry_sdk.init(
        dsn="https://your-public-key@sentry.io/your-project-id",  # 从Sentry控制台获取
        traces_sample_rate=1.0,  # 性能监控采样率
        environment="production",  # 环境标识
    )
    
# Flask应用集成示例
def setup_sentry_flask():
    sentry_sdk.init(
        dsn="YOUR_DSN_HERE",
        integrations=[FlaskIntegration()],
        traces_sample_rate=1.0
    )
    
    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/error')
    def trigger_error():
        division_by_zero = 1 / 0  # 这会被Sentry捕获
        return "This won't be reached"
    
    return app

# Django集成(在settings.py中添加)
"""
import sentry_sdk
from sentry_sdk.integrations.django import DjangoIntegration

sentry_sdk.init(
    dsn="YOUR_DSN_HERE",
    integrations=[DjangoIntegration()],
    traces_sample_rate=1.0,
    send_default_pii=True  # 是否发送用户信息
)
"""

# 手动捕获异常示例
def manual_capture():
    try:
        risky_operation()
    except Exception as e:
        sentry_sdk.capture_exception(e)
        print("错误已发送到Sentry")

# 记录自定义消息
def log_custom_message():
    sentry_sdk.capture_message("发生了自定义业务异常", level="error")

# 添加用户上下文
def set_user_context():
    sentry_sdk.set_user({"email": "user@example.com", "id": "12345"})

# 添加额外标签
def add_tags():
    with sentry_sdk.configure_scope() as scope:
        scope.set_tag("page_locale", "zh-cn")
        scope.set_tag("business_unit", "payment")

# 与Python logging集成
def integrate_with_logging():
    sentry_sdk.init(dsn="YOUR_DSN_HERE")
    
    logger = logging.getLogger(__name__)
    handler = sentry_sdk.integrations.logging.EventHandler()
    logger.addHandler(handler)
    
    # 现在logging.error()会自动发送到Sentry
    logger.error("通过logging模块记录的错误")

# 测试配置是否生效
def test_sentry():
    setup_sentry_basic()
    
    # 测试异常捕获
    try:
        result = 1 / 0
    except ZeroDivisionError as e:
        sentry_sdk.capture_exception(e)
        print("测试异常已发送")
    
    # 测试自定义消息
    sentry_sdk.capture_message("Sentry配置测试", level="info")

if __name__ == "__main__":
    test_sentry()

核心步骤:

  1. 注册Sentry账号并创建项目,获取DSN
  2. 安装SDK:pip install sentry-sdk
  3. 在应用初始化时调用sentry_sdk.init()配置DSN
  4. 添加对应的框架集成(Flask/Django等)
  5. 自动捕获未处理异常,或使用capture_exception()手动捕获

配置建议:根据环境设置不同的DSN和采样率。

我表达的不清晰,我的意思 是用 pycharm 来 debug sentry。。因为 sentry 代码看不懂

打开项目跟路径啊,然后 pycharm 调试和其他工具调试方法一样啊,打断点啥的

旧版的 sentry 基本上就是个 django app
不过看起来作者对 django 很是不满,逐渐把 django 的东西都换掉了

基本上可以认为分成了 web 和 celery task 两大块
web 的启动入口在 utils/runner.py

Read The Fucking Manual Before Fucking.

起个 docker 运行一下最简单了啊
(如果你要用 sentry 的话)


如果你要看代码的话。。。github 上就可以看啊

哈哈哈哈 Before Fucking

sentry 的问题是 manual 是偏使用的,去 github 上稍微问点东西,作者就说你该买收费服务了

一般我是把 sentry 的包生成的错误日志导入到 txt 文件,然后微信公众号测试号来收 bug 提示。方便快捷,去搭建它那个后台来看 bug 感觉也挺麻烦的。

怎么搞?

加个插件,继承 notify.NotificationPlugin 就行了
https://github.com/julyclyde/sentry-IM

回到顶部