크래시 리포트, 에러 트래킹이 필요하면 sentry

less than 1 minute read

우와~ elixir를 지원하네. 바로 도입해서 사용했다. elixir를 지원하는 서비스가 없어서 비교도 필요 없었다. 써보니 웬걸. 좋구나.

에러에 추가 정보를 담을 수 있는 Context, 중요한 정보를 남겨 놓으면 에러와 같이 보내는 Breadcrumbs를 주로 사용한다. 기능이 많아서 안 써본 기능도 많다. 지원 플랫폼도 계속 늘어나고 있다. 최근에 Crashpad와 Breakpad도 지원하고 Unreal Engine 4까지 지원한다. 이제 고향 같은 C++로 가더라도 Sentry를 사용할 수 있다.

elixir 공식 라이브러리가 있다.

defp deps do
  [
    {:sentry, "~> 7.2"},
    {:jason, "~> 1.1"}
  ]
end

mix.exs 파일에 추가한다.

config :logger,
  backends: [:console, Sentry.LoggerBackend]

config.exs 파일에 추가한다. process 크래시를 감지해서 에러 메시지를 보낼 logger backend를 설치한다.

config :sentry,
  dsn: "https://public_key@app.getsentry.com/1",
  environment_name: Mix.env(),
  included_environments: [:dev, :prod],
  enable_source_code_context: true,
  root_source_code_path: File.cwd!()

nil 사이트에서 프로젝트를 만들면 DSN(Data Source Name)을 발급받는다.

$ mix deps.get
$ MIX_ENV=dev mix sentry.send_test_event
Client configuration:
server: ...
public_key: ...
secret_key:
included_environments: [:dev, :prod]
current environment_name: :dev
hackney_opts: []

Sending test event...
Test event sent!  Event ID: ...

설정이 제대로 됐다면 sentry에 테스트 이벤트가 등록된다. 간편하게 설정 테스트를 할 수 있다. 섬세하다.

사이드 프로젝트 slabsentry elixir 공식 클라이언트를 통합했다.

sentry 홈페이지 - Application Performance Monitoring & Error Tracking Software