Ravenμ AMD μ’
μ νλͺ©μΌλ‘ ν¬ν¨μν¨ ν window.onerror
μ΄λ²€νΈλ₯Ό 볡μνλ λ°©λ²μ μ°Ύλ λ° λ¬Έμ κ° μμ΅λλ€.
κ°λ° μ€μλ Ravenμ μ ν μ¬μ©νκ³ μΆμ§ μμΌλ―λ‘ νλ‘λμ
λͺ¨λμμλ config()
/ install()
λ§ νΈμΆν©λλ€. κ·Έλ¬λ κ°λ° λͺ¨λμμ λͺ¨λ μ€λ₯λ μ¬μ ν TraceKit.report()
μ μν΄ λ°μν©λλ€. μ΄λ λΈλΌμ°μ κ°λ° λꡬμμ νμΌ/λΌμΈ λ²νΈ/μ€ν μΆμ μ΄ λ μ΄μ λμμ΄ λμ§ μκΈ° λλ¬Έμ μλΉν μ€λ§μ€λ½μ΅λλ€.
κ°λ°μ λͺ¨λμμ uninstall()
λ₯Ό νΈμΆνμ§λ§ λμμ΄ λμ§ μμμ΅λλ€. config()
λλ install()
λ΄λΆμμ μννλ λμ window.onerror
μ λ°μΈλ©νλ μ΄μ κ° μμ΅λκΉ?
ν΄κ²°μ± μ μ°Ύμμ§λ§ μ΄μμ μ΄μ§λ μμ΅λλ€...
κ°λ°μ λͺ¨λμμ μλμΌλ‘ window.onerror = null
λ₯Ό μ€μ νλ €κ³ νμ§λ§ μλνμ§ μμμ΅λλ€. λ¬Έμ λ λ΄κ° require()
λͺ κ°μ λͺ¨λμμ Ravenμ μ¬μ©νκ³ μμκ³ Ravenμ΄ window.onerror
μ λ€μ λ°μΈλ©λ λλ§λ€μμ΅λλ€.
κ·Έλμ λμ noConflict()
μ¬μ©μ μ€λ¨νκ³ requirejs ꡬμ±μ μ μ μ’
μμ±μΌλ‘ ν¬ν¨νκ³ λ€λ₯Έ λͺ¨λμμ λ‘컬 μ’
μμ±μΌλ‘ μ κ±°νμ΅λλ€. μ΄λ κ² νλ©΄ λμ€μ Ravenμ΄ μ΄λ²€νΈλ₯Ό λ€μ λ°μΈλ©νμ§ μκ³ λ window.onerror = null
λ₯Ό μ€μ ν μ μμ΅λλ€.
κ½€ μ§μ λΆν μμ :(
@adambiggs λ λ€λ₯Έ μ루μ μ κ΅¬μ± λ° μ€μΉ νΈμΆμ μννλ Raven-jsμ© λν AMD λͺ¨λμ λ§λλ κ²μ λλ€. μ΄λ raven-jsλ₯Ό ν λ²λ§ κ°μ Έμ¬ μ μμ§λ§ μ체 λͺ¨λμ μ¬λ¬ λ² κ°μ Έμ¬ μ μμμ μλ―Έν©λλ€(afaik).
https://github.com/getsentry/raven-js/pull/109 λ° https://github.com/getsentry/raven-js/issues/91#issuecomment -15560074μ κ΄λ ¨μ΄ μμ μ μμ΅λλ€.
μ΄κ²μ λ μ΄μ κ΄λ ¨μ΄ μμ΄μΌ ν©λλ€. window.onerror
λ install()
λ₯Ό νΈμΆν λκΉμ§ λ³κ²½λμ§ μκ³ uninstall()
λ₯Ό νΈμΆν λ 볡μλ©λλ€. λ€λ₯Έ λ¬Έμ κ° μμΌλ©΄ μλ €μ£ΌμΈμ.
@mattrobenolt , 1.1.11λ‘ μ
κ·Έλ μ΄λνκ³ install()
λ₯Ό νΈμΆνμ§ μκ³ μ¬μ ν κΉλ§κ· μ²λ¦¬ μ€λ₯λ‘ λλ©λλ€.
@bobbyrenwick μ΄λ° μΌμ΄ μΌμ΄λκ³ μμμ 보μ¬μ£Όλ κ³΅κ° μλ£μ μ λ₯Ό μ°κ²°ν΄ μ£Όμκ² μ΅λκΉ?
μ΄μ λν ν΄κ²° λ°©λ²μ΄ μμ΅λκΉ? Raven.config()
λλ Raven.install()
λ₯Ό νΈμΆνμ§ μκ±°λ Raven.config(false)
λ₯Ό νΈμΆνλλΌλ jquery λλ onerror νΈλ€λ¬κ° μ¬μ ν μ€μΉλ κ² κ°μ΅λλ€. μ μΌν ν΄κ²° λ°©λ²μ μ²μμ raven jsλ₯Ό λ‘λνμ§ μλ κ² κ°μ΅λλ€(μ΄μμ μ΄μ§ μμ).
μ°Έμ‘°: #282 :)
#282λ₯Ό λ°°κ²½μΌλ‘ μ 곡νκ³ μμ΅λκΉ? κ±°κΈ°μ μ΄λ€ ν΄κ²° λ°©λ²λ 보μ΄μ§ μμ΅λλ€.
λ€, μμ§ ν΄κ²°μ± μ΄ μκΈ° λλ¬Έμ λλ€.
λ΄ μ μΌν μμ μ if
λΈλ‘μμ require()
λ₯Ό μ¬μ©νλ κ²μ
λλ€(λ΄ μ½λμ λλ¨Έμ§ λΆλΆμ μ΄μ import
λ₯Ό μ¬μ©ν©λλ€.
μ΄μ λν μ λ°μ΄νΈκ° μμ΅λκΉ?
λͺ¨λ μ λ°μ΄νΈ? μ¬μ ν μ λλ‘ μλνμ§ μμ΅λλ€.
νΈμ§: λ΄ λ§ν¬μ λν΄ μ£μ‘ν©λλ€. κΈ΄ ν루λ₯Ό 보λμ΅λλ€.
무μμ νλ €κ³ ν©λκΉ? λλ μ΄κ²μνκ³ μλλ° μ μλν©λλ€.
if (process.env.RAVEN_DSN) {
require('raven-js').config(process.env.RAVEN_DSN, {
environment: process.env.NODE_ENV,
}).install();
}
μ¬κΈ°μ process.env.RAVEN_DSN
λ λ¬Όλ‘ DSNμ΄λ©°, webpack.EnvironmentPlugin
λ₯Ό ν΅ν΄ Ravenμ μ€ννλ €λ νκ²½μ©μΌλ‘ λΉλν λλ§ μ€μ λ©λλ€.
κ·νμ λ²μ μμλ Angular ErrorHandlerλ₯Ό 쑰건λΆλ‘ μ€μ νλ κ²μ΄ λΆκ°λ₯ν©λλ€. λͺ¨λ κ²½μ°μ μ€μ νκ³ λ¬΄μ¨ μΌμ΄ μμ΄λ μ€λ₯λ₯Ό μΌν€κ±°λ 곡κΈμμ λμ΄νμ§ μκ³ κ³μ λμ΄νλ©΄ od devλ‘ μΈν΄ μ 체 λͺ¨λμ΄ μΆ©λν©λλ€.
λ΄κ° μλ ν 쑰건μ λ°λΌ Angular 곡κΈμλ₯Ό μ¬μ©νκ±°λ μ¬μ©νμ§ μλ κ²μ΄ λΆκ°λ₯ν©λλ€.
μ λ μ€λ μμ μλλ₯Ό μ¬λ¬ λ² λ°λ³΅νμ΅λλ€.
μμ§ν λ§ν΄μ Raven λ¬Έμ λΌκΈ°λ³΄λ€λ Angular λ¬Έμ μ²λΌ λ€λ¦½λλ€.
κ·Έλ κΈ΄ νμ§λ§, λ³΄λ€ μΌλ°μ μΈ μ루μ μ΄ μ’μ μΆκ° μ¬νμ΄ λ κ²μ΄λΌλ λ° λμν©λλ€.
λͺ¨λ URLκ³Ό μΌμΉνλ ignoreUrls
μ΅μ
μμ ν¨ν΄μ μ€μ ν΄ λ³΄μ
¨μ΅λκΉ? κ·Έκ²μ΄ λΉμ μ΄ νμλ‘ νλ κ²μ ν΄μ€κΉμ? ignoreUrls: [/./]
κ°μ κ² ?
μλλ©΄ sampleRate
λ₯Ό 0μΌλ‘ μ€μ νμκ² μ΅λκΉ?
Ravenμ΄ μμ²μ 보λ΄κ³ μ€λ₯λ₯Ό ν¬μ°©νλ κ²μ λ°©μ§νλ κ²μ΄ κ°λ₯νμ§λ§ Angular ErrorHandlerκ° μ€λ₯λ₯Ό μΌν€λ κ²μ λ§μ§λ λͺ»ν©λλ€(= μ΅μν μ€λ₯κ° λ°μν μμΉμμ μ€μ νμ μΆμ νμ§ λͺ»νλ κ²½μ°).
λλ λΉμ μ΄ μ³λ€κ³ μκ°νκ³ κ·Έκ²μ κ²°κ΅ Ravenμ λ¬Έμ κ° μλλλ€.
μμ§λ κ·Έκ²μ μμλ΄λ €κ³ μ¬κΈ° μ€λ μ¬λλ€μ μν΄, κ·Έκ²μ λ΄κ° μ²μμ λμΉ κ΅¬μ± μ΅μ
μ΄μμ΅λλ€ shouldSendCallback
:
import Raven from 'raven-js';
const env = 'prod';
const release = '12345';
Raven
.config('https://<example>@sentry.io/1234', {
environment: env,
release: release,
shouldSendCallback: () => {
// Do your logic here...
return ['prod', 'staging'].indexOf(env) !== -1;
},
})
.install();
shouldSendCallback
κ° false
$μ΄λ©΄ 보μ΄κ° λ³΄κ³ νμ§ μμ΅λλ€. μ΄ π λ₯Ό μ¬μ©νλ©΄ μ½λμ μ‘°κ±΄λΆ λ³΄κ³ λ
Όλ¦¬κ° νμνμ§ μμ΅λλ€.
DSNμ λΉ λ¬Έμμ΄λ‘ λ§λμμμ€. λ³΄κ³ κ° λΉνμ±νλ©λλ€
μ΄ λ°©λ²μ μ¬μ©νμ΅λλ€. κ·Έκ²μ λλ₯Ό μν΄ μΌνλ κ² κ°μ΅λλ€
if (environment.production) {
Raven.config('https://@sentry.io/')
.install();
}
κ·Έλ¦¬κ³ κ³΅κΈμμμ
providers: [environment.production ? { provide: ErrorHandler, useClass: RavenErrorHandler } : [], ...
μ¬κΈ°μ λ΄κ° μλͺ»ν κ²μ΄ μμΌλ©΄ μλ €μ£ΌμΈμ.
κ°μ₯ μ μ©ν λκΈ
μμ§λ κ·Έκ²μ μμλ΄λ €κ³ μ¬κΈ° μ€λ μ¬λλ€μ μν΄, κ·Έκ²μ λ΄κ° μ²μμ λμΉ κ΅¬μ± μ΅μ μ΄μμ΅λλ€
shouldSendCallback
:shouldSendCallback
κ°false
$μ΄λ©΄ 보μ΄κ° λ³΄κ³ νμ§ μμ΅λλ€. μ΄ π λ₯Ό μ¬μ©νλ©΄ μ½λμ μ‘°κ±΄λΆ λ³΄κ³ λ Όλ¦¬κ° νμνμ§ μμ΅λλ€.