From ac42d919c5a4ac71fbf773ec5fb6741b6c8885ce Mon Sep 17 00:00:00 2001 From: DIYgod Date: Tue, 21 Aug 2018 18:00:03 +0800 Subject: [PATCH] app: support sentry tracker --- config.js | 1 + middleware/onerror.js | 12 ++++++++++++ package.json | 1 + yarn.lock | 40 +++++++++++++++++++++++++++++++++++++--- 4 files changed, 51 insertions(+), 3 deletions(-) diff --git a/config.js b/config.js index 2bbd13179..bc0adec57 100644 --- a/config.js +++ b/config.js @@ -10,6 +10,7 @@ module.exports = { requestRetry: process.env.REQUEST_RETRY || 2, // 请求失败重试次数 // 是否显示 Debug 信息,取值 boolean 'false' 'key' ,取值为 'false' false 时永远不显示,取值为 'key' 时带上 ?debug=key 显示 debugInfo: process.env.DEBUG_INFO || true, + sentry: process.env.SENTRY || '', // 使用 sentry 进行错误追踪,这里是 sentry 提供的 DSN 链接 redis: { url: process.env.REDIS_URL || 'redis://localhost:6379/', options: { diff --git a/middleware/onerror.js b/middleware/onerror.js index 3deac1980..9a89cdceb 100644 --- a/middleware/onerror.js +++ b/middleware/onerror.js @@ -1,4 +1,10 @@ const logger = require('../utils/logger'); +const Raven = require('raven'); +const config = require('../config'); + +if (config.sentry) { + Raven.config(config.sentry).install(); +} module.exports = async (ctx, next) => { try { @@ -10,5 +16,11 @@ module.exports = async (ctx, next) => { }); ctx.body = `RSSHub 发生了一些意外:
${err instanceof Error ? err.stack : err}
`; ctx.status = 404; + + if (config.sentry) { + Raven.captureException(err, function(err, eventId) { + console.log('Reported error ' + eventId); + }); + } } }; diff --git a/package.json b/package.json index 75d3919c4..d57a2ff49 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,7 @@ "lru-cache": "4.1.3", "markdown-it": "^8.4.2", "path-to-regexp": "2.2.1", + "raven": "^2.6.3", "readall": "1.0.0", "redis": "2.8.0", "rss-parser": "3.4.3", diff --git a/yarn.lock b/yarn.lock index af13b78d8..03a7b4020 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1564,6 +1564,10 @@ chardet@^0.4.0: version "0.4.2" resolved "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" +charenc@~0.0.1: + version "0.0.2" + resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + cheerio@1.0.0-rc.2: version "1.0.0-rc.2" resolved "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz#4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db" @@ -1873,6 +1877,10 @@ convert-source-map@^1.1.0: version "1.5.1" resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + cookies@~0.7.0, cookies@~0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.7.1.tgz#7c8a615f5481c61ab9f16c833731bcb8f663b99b" @@ -1992,6 +2000,10 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" +crypt@~0.0.1: + version "0.0.2" + resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + cryptiles@3.x.x: version "3.1.2" resolved "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" @@ -3651,7 +3663,7 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" -is-buffer@^1.1.5: +is-buffer@^1.1.5, is-buffer@~1.1.1: version "1.1.6" resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -4603,6 +4615,14 @@ md5.js@^1.3.4: hash-base "^3.0.0" inherits "^2.0.1" +md5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" + dependencies: + charenc "~0.0.1" + crypt "~0.0.1" + is-buffer "~1.1.1" + mdurl@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" @@ -5914,6 +5934,16 @@ range-parser@^1.0.3: version "1.2.0" resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" +raven@^2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/raven/-/raven-2.6.3.tgz#207475a12809277ef54eaceafe2597ff65262ab4" + dependencies: + cookie "0.3.1" + md5 "^2.2.1" + stack-trace "0.0.10" + timed-out "4.0.1" + uuid "3.0.0" + rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: version "1.2.7" resolved "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz#8a10ca30d588d00464360372b890d06dacd02297" @@ -6554,7 +6584,7 @@ ssri@^5.2.4: dependencies: safe-buffer "^5.1.1" -stack-trace@0.0.x: +stack-trace@0.0.10, stack-trace@0.0.x: version "0.0.10" resolved "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" @@ -6813,7 +6843,7 @@ time-fix-plugin@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/time-fix-plugin/-/time-fix-plugin-2.0.1.tgz#4943dd28c8fa36a543aec34e3af2a173abc43de1" -timed-out@^4.0.0: +timed-out@4.0.1, timed-out@^4.0.0: version "4.0.1" resolved "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" @@ -7165,6 +7195,10 @@ utila@~0.4: version "0.4.0" resolved "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" +uuid@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.0.tgz#6728fc0459c450d796a99c31837569bdf672d728" + uuid@^3.1.0, uuid@^3.2.1: version "3.2.1" resolved "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14"