2017-10-30 4 views
-2

센트리의 예외에 git blame 같은 정보가 포함된다면 정말 좋을 것입니다.Sentry for Python : 각 소스 코드 줄에 접두사와 같은 "git blame"을 추가하십시오.

센트리에서 예외로 보이는 모든 소스 코드의 줄에 git blame (날짜, 커밋 해시, 작성자)과 같은 접두사가 있으면 관련 커밋을 더 빠르게 찾을 수 있습니다.

AFAIK 보초 사는 상자에서 이것을 할 수 없습니다. 이걸 얻기 위해 어디서 어떻게 보초를 할 수 있을까요?

의견을 남겨주세요. 왜이 질문에 답해주십시오. 나는 호기심과 기꺼이 배우고 있습니다.

레코드 용입니다. 보초 팀은 이와 비슷한 일을하고 있습니다. 정확하지는 않지만 동일한 사용 사례를 해결합니다. https://github.com/getsentry/sentry/issues/6547

+1

이것은 Sentry의 기능 요청과 같지만 질문은 아닙니다. – georgexsh

+2

@georgexsh 센트리가 가진 모든 기능을 모르기 때문에 기능 요청이나 질문을 구분할 수 없습니다. – guettli

+0

제목이나 본문에 적어도 하나 이상의 물음표를 포함시킬 수 있습니다 (질문이 분명해 보일지라도). – DJV

답변

1

git blame이 표시되지 않지만 Sentry Releases와 통합되어 적절한 커밋 및 작성자와 링크가있는 Guthub Plugin을 사용해 보시기 바랍니다. 기둥.

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 플러그인을 변경하십시오. bitbucket repos도 있습니다. – gukoff

관련 문제