2017-10-30 5 views
-2

センチリーの例外にgit blameのような情報が含まれていると本当に素晴らしいだろう。Sentry for Python:各ソースコード行に接頭辞のような "git blame"を付け加える

もし私がセリで例外に見られるソースコードのすべての行にgit blame(日付、コミットハッシュ、著者)のような接頭辞があれば、関連するコミットがより早く見つかるかもしれません。

AFAIKセントリーはこれを箱から出すことはできません。どこに、どのように私はこれを取得するために看護士にフックできますか?

なぜこの質問を投票してくださいかコメントを残してください。私は興味があり、喜んで学びます。

レコード用です。看守チームはこのようなことに取り組んでいます。正確ではありませんが、同じユースケースを解決します:https://github.com/getsentry/sentry/issues/6547

+1

これはSentryの機能リクエストのようですが、質問はしませんか? – georgexsh

+2

@georgexsh私はsentryが持っているすべての機能を知っていないので、機能の要求や質問を区別することはできません。 – guettli

+0

タイトルや本文に少なくとも1つの疑問符を含めることができると思います。 – DJV

答えて

1

git blameを表示しないGuthub Pluginを試してみましょう。ただし、Sentryリリースと統合して、適切なコミットと作成者とのリンクを表示してくださいGithub。

https://sentry.io/integrations/github/

+0

このようなプラグインが存在することを知ってうれしいです。ありがとうございました。私の現在の文脈では、ソースコードはgithub上ではなく、非公開(非github)リポジトリにあります。 – guettli

1

トレースバックは、コードの複数行から成ります。あなたはGitPythonライブラリを使用して、これらの線のそれぞれに対してgit blameから情報を抽出することができます。

import sys 
import traceback 


from git import Repo 


def commit_info(file_path, line_number): 
    for commit, lines in Repo().blame('HEAD', file_path): 
     line_number -= len(lines) 
     if line_number <= 0: 
      return commit.hexsha, commit.committed_datetime, commit.author.name 


try: 
    raise Exception('error') 
except Exception: 
    for filename, line_number, _, _ in traceback.extract_tb(sys.exc_info()[2]): 
     print filename, line_number, commit_info(filename, line_number) 

その後、それはあなたが歩哨にこの情報を送信する方法をあなた次第です。可能な解決策の一つ一つが、上記のリストのコミットを選択するとextraキーワードを使用して、ロガーがあなたのために仕事をさせている。

try: 
    raise Exception 
except Exception: 
    commit = choose_one_commit() 
    logger.exception('Error', extra={'author': author.name, 'sha': commit.hexsha}) 

また、あなたはこのextraパラメータを追加することになり、独自のロガーを使用することができますすべて.exception().error()および.critical()が呼び出されます。

全体的には、どのような動作を達成したいのか非常に曖昧であり、すべてが可能です。しかし、git blameを呼び出すのは高価で、アプリケーションのパフォーマンスが大きく低下する可能性があります。

+0

はい、アプリケーションホストでこれを行うと、パフォーマンスが低下します。データをアプリケーションホストから守衛に移した後で、これを守衛の内部で行う方法はありますか? – guettli

+0

Sentryデータベースを手動で変更したり、カスタムプラグインを作成したりできます(https://docs.sentry.io/server/plugins/#rd-party-plugins)。たとえば、Githubプラグインをフォークして、@ Trilliputが言ったように変更します。ビットバケットレポもあります。 – gukoff

関連する問題