diff --git a/libs/live-fetcher.js b/libs/live-fetcher.js index 762153e..0a3f8b7 100644 --- a/libs/live-fetcher.js +++ b/libs/live-fetcher.js @@ -1,5 +1,6 @@ // Cache ongoing fetching, prevent redundant request const { waitings } = require('./live-pool.js') +const raven = require('./raven.js') module.exports = async (scope, fn, paramsPath) => { const fetchKey = `#${scope} ${paramsPath}` @@ -29,6 +30,7 @@ module.exports = async (scope, fn, paramsPath) => { } const errorLogger = (fetchKey, err, status) => { + raven.captureException(err) if (status === 'unknown') { // log details err info const resData = JSON.stringify(err.response.data, null, 2) diff --git a/libs/raven.js b/libs/raven.js new file mode 100644 index 0000000..059c620 --- /dev/null +++ b/libs/raven.js @@ -0,0 +1,8 @@ +const raven = require('raven') +const { SENTRY_URI } = process.env + +if (SENTRY_URI) { + raven.config(SENTRY_URI).install() +} + +module.exports = raven diff --git a/package-lock.json b/package-lock.json index a3731cc..13676ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -518,6 +518,11 @@ "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", "dev": true }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" + }, "cheerio": { "version": "1.0.0-rc.2", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", @@ -741,6 +746,11 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, "cookiejar": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", @@ -791,6 +801,11 @@ "which": "^1.2.9" } }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" + }, "css-select": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", @@ -3058,6 +3073,16 @@ "resolved": "https://registry.npmjs.org/marked/-/marked-0.4.0.tgz", "integrity": "sha512-tMsdNBgOsrUophCAFQl0XPe6Zqk/uy9gnue+jIIKhykO51hxyu6uNx7zBPy0+y/WKYVZZMspV9YeXLNdKk+iYw==" }, + "md5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", + "requires": { + "charenc": "~0.0.1", + "crypt": "~0.0.1", + "is-buffer": "~1.1.1" + } + }, "mem": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", @@ -6430,6 +6455,25 @@ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, + "raven": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/raven/-/raven-2.6.3.tgz", + "integrity": "sha512-bKre7qlDW+y1+G2bUtCuntdDYc8o5v1T233t0vmJfbj8ttGOgLrGRlYB8saelVMW9KUAJNLrhFkAKOwFWFJonw==", + "requires": { + "cookie": "0.3.1", + "md5": "^2.2.1", + "stack-trace": "0.0.10", + "timed-out": "4.0.1", + "uuid": "3.0.0" + }, + "dependencies": { + "uuid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.0.tgz", + "integrity": "sha1-Zyj8BFnEUNeWqZwxg3VpvfZy1yg=" + } + } + }, "raw-body": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", @@ -7029,6 +7073,11 @@ "tweetnacl": "~0.14.0" } }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" + }, "stack-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", @@ -7317,6 +7366,11 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" + }, "tmatch": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/tmatch/-/tmatch-4.0.0.tgz", diff --git a/package.json b/package.json index 6885ed4..ac7dcad 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "test": "tap test/*.js --reporter spec -j12", "start": "node service.js", "predeploy": "now -T amio inspect badgen.net && now rm badgen-service --safe -y -T amio || true", - "deploy": "now -T amio -e API_HOST='https://api.badgen.net' -e GH_TOKEN='@badgen-gh-token' -e TRACKING_GA='@badgen-tracking-ga'", + "deploy": "now -T amio -e API_HOST='https://api.badgen.net' -e GH_TOKEN='@badgen-gh-token' -e SENTRY_URI='@badgen-sentry-uri' -e TRACKING_GA='@badgen-tracking-ga'", "postdeploy": "now -T amio alias" }, "dependencies": { @@ -24,6 +24,7 @@ "micro": "^9.3.3", "micro-fork": "^0.1.0", "millify": "^2.0.1", + "raven": "^2.6.3", "semver": "^5.5.0", "serve-marked": "0.3.0", "xml2js": "^0.4.19"