From 9c1ab820da913b958353bfdc135bc39d9377e841 Mon Sep 17 00:00:00 2001 From: Marius Begby Date: Wed, 23 Aug 2023 15:21:16 +0200 Subject: [PATCH] feat: add pushing logs to loki --- .env.example | 4 + package-lock.json | 390 ++++++++++++++++++++++++++++++++++++----- package.json | 91 +++++----- src/services/logger.js | 18 ++ 4 files changed, 410 insertions(+), 93 deletions(-) diff --git a/.env.example b/.env.example index 26c806fb..355039ae 100644 --- a/.env.example +++ b/.env.example @@ -25,3 +25,7 @@ BOTLIST_DISCORD_BOTLIST_EU_API_TOKEN= # Optional: Only change this if you know what you are doing NODE_OPTIONS= UV_THREADPOOL_SIZE= + +# Optional: Password/token for pushing logs to Loki +LOKI_AUTH_USERNAME= +LOKI_AUTH_PASSWORD= diff --git a/package-lock.json b/package-lock.json index f4e23cf3..77985c67 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,9 +18,10 @@ "discord-voip": "^0.1.2", "discord.js": "^14.13.0", "dotenv": "^16.3.1", - "mediaplex": "^0.0.4", + "mediaplex": "^0.0.2", "node-os-utils": "^1.3.7", - "pino": "^8.15.0" + "pino": "^8.15.0", + "pino-loki": "^2.1.3" }, "devDependencies": { "eslint": "^8.47.0", @@ -381,11 +382,44 @@ "npm": ">=7.0.0" } }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@tokenizer/token": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, "node_modules/@types/eslint": { "version": "8.44.0", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.0.tgz", @@ -402,12 +436,25 @@ "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", "dev": true }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" + }, "node_modules/@types/json-schema": { "version": "7.0.12", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", "dev": true }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/node": { "version": "20.3.3", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.3.tgz", @@ -419,6 +466,14 @@ "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", "dev": true }, + "node_modules/@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/ws": { "version": "8.5.5", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", @@ -759,6 +814,31 @@ "node": ">=10.16.0" } }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -830,6 +910,17 @@ "node": ">=10" } }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -858,6 +949,14 @@ "color-support": "bin.js" } }, + "node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "engines": { + "node": ">=14" + } + }, "node_modules/common-tags": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", @@ -956,12 +1055,45 @@ } } }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "engines": { + "node": ">=10" + } + }, "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -1149,6 +1281,14 @@ "optional": true, "peer": true }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -1561,6 +1701,20 @@ "undici": "^5.8.2" } }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -1628,6 +1782,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -1702,6 +1880,23 @@ "entities": "^4.4.0" } }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -1886,6 +2081,11 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -1909,6 +2109,14 @@ "node": ">=6" } }, + "node_modules/keyv": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", + "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -2053,6 +2261,14 @@ "node": ">=0.8.0" } }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -2109,29 +2325,29 @@ } }, "node_modules/mediaplex": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/mediaplex/-/mediaplex-0.0.4.tgz", - "integrity": "sha512-TLsBBGCCwUaM6E5eWwDQmL1ReojXUFKH+/akmCRJ1Y2coLZj26UR/FDtfPTdyP1sBxXmU59+FhHaHZA7Y5VAnw==", + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/mediaplex/-/mediaplex-0.0.2.tgz", + "integrity": "sha512-Ha7/bjTOwZXHWnHUj6aCFb4E48dnNt/9O9Y0+WE7btPiw20i20EMIPYdQWqMCywY8XJsEDshf/WvNNp7x/XKsg==", "engines": { "node": ">= 10" }, "optionalDependencies": { - "mediaplex-android-arm64": "0.0.4", - "mediaplex-darwin-arm64": "0.0.4", - "mediaplex-darwin-universal": "0.0.4", - "mediaplex-darwin-x64": "0.0.4", - "mediaplex-freebsd-x64": "0.0.4", - "mediaplex-linux-arm-gnueabihf": "0.0.4", - "mediaplex-linux-x64-gnu": "0.0.4", - "mediaplex-win32-arm64-msvc": "0.0.4", - "mediaplex-win32-ia32-msvc": "0.0.4", - "mediaplex-win32-x64-msvc": "0.0.4" + "mediaplex-android-arm64": "0.0.2", + "mediaplex-darwin-arm64": "0.0.2", + "mediaplex-darwin-universal": "0.0.2", + "mediaplex-darwin-x64": "0.0.2", + "mediaplex-freebsd-x64": "0.0.2", + "mediaplex-linux-arm-gnueabihf": "0.0.2", + "mediaplex-linux-x64-gnu": "0.0.2", + "mediaplex-win32-arm64-msvc": "0.0.2", + "mediaplex-win32-ia32-msvc": "0.0.2", + "mediaplex-win32-x64-msvc": "0.0.2" } }, "node_modules/mediaplex-android-arm64": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/mediaplex-android-arm64/-/mediaplex-android-arm64-0.0.4.tgz", - "integrity": "sha512-DSuw8jD5ZAGPUHeAJoevcOYJ/DU2RQiTatSeA+ESV2Jep6aOoKWDUSia+f3c+J6TO4bwBRzSESlvZm/g005Dxw==", + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/mediaplex-android-arm64/-/mediaplex-android-arm64-0.0.2.tgz", + "integrity": "sha512-/ggcQMzp0MfmUlLH8SKsqMjhczCqo3BCEzRFnde1udnbJcap//KqV1NSjMRO8TZ9NwBaUdXt3Bdw45BBrjFa4w==", "cpu": [ "arm64" ], @@ -2144,9 +2360,9 @@ } }, "node_modules/mediaplex-darwin-arm64": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/mediaplex-darwin-arm64/-/mediaplex-darwin-arm64-0.0.4.tgz", - "integrity": "sha512-/5IdGd31TUBOIT8n0uoLXH+R9bI7q034SshOm+yQfsNJkISeJu/KQPdPq/1d52VxDTC0InQBsZKe+nHzMzcp3A==", + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/mediaplex-darwin-arm64/-/mediaplex-darwin-arm64-0.0.2.tgz", + "integrity": "sha512-daXx4+tJS8dnIf7S/SdOSh4KoUA5qKG1AX4b4clG2XihYL8WpCxdntQ/QPXJHwwBMuthdW7rleKWVLQbXYtKVA==", "cpu": [ "arm64" ], @@ -2159,9 +2375,9 @@ } }, "node_modules/mediaplex-darwin-universal": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/mediaplex-darwin-universal/-/mediaplex-darwin-universal-0.0.4.tgz", - "integrity": "sha512-moVLEMPWxLS/JB3FHBgyS74fG9IT+ynl4plOWV8HltVnTsOvHFWFbn8yOQ89e/eJfA/8VXIxPWACa8cZQYrjbg==", + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/mediaplex-darwin-universal/-/mediaplex-darwin-universal-0.0.2.tgz", + "integrity": "sha512-qkaXg2SCO5EvArEbXqpIeKZAT2/Z/ABKZyozkLvuUUdsqproOuSobmYpoPaSdZiLHfqjYcLpDoMwaRW3aQFLag==", "optional": true, "os": [ "darwin" @@ -2171,9 +2387,9 @@ } }, "node_modules/mediaplex-darwin-x64": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/mediaplex-darwin-x64/-/mediaplex-darwin-x64-0.0.4.tgz", - "integrity": "sha512-R/tbU4loBawwMP9uWk90MU1YaEASKNrZ8m5lGMQFVuiz74IQIfr1vbrsyASKkrtbmgT5uhoErbD/ny6qlwfErQ==", + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/mediaplex-darwin-x64/-/mediaplex-darwin-x64-0.0.2.tgz", + "integrity": "sha512-johRoEQOxh5bgFTeFzTiFXG9gMqp39nyldBqG55TzhpwWyHIjTk0PRMafOlKNqfd6bzN4E3285b0VnKCC0Z5MA==", "cpu": [ "x64" ], @@ -2186,9 +2402,9 @@ } }, "node_modules/mediaplex-freebsd-x64": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/mediaplex-freebsd-x64/-/mediaplex-freebsd-x64-0.0.4.tgz", - "integrity": "sha512-n20/SeTQ2WqhvXkOWvA6U97azzWN083g17VPNDki17aitVvH5B6phDk8YSpAW/jYRMDsK0c1qUqzZ3xNlqD/Ow==", + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/mediaplex-freebsd-x64/-/mediaplex-freebsd-x64-0.0.2.tgz", + "integrity": "sha512-JciEUod9cqGVdWr5AsT4Eu8jnIB/rG6RBiA/Z/PeA1rebpLzZbw5DqzXfyBgzj9a/AR3cboefCl7KsZrFe36Ew==", "cpu": [ "x64" ], @@ -2201,9 +2417,9 @@ } }, "node_modules/mediaplex-linux-arm-gnueabihf": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/mediaplex-linux-arm-gnueabihf/-/mediaplex-linux-arm-gnueabihf-0.0.4.tgz", - "integrity": "sha512-b4hb9MnfEmBlWHAP0wmvXKE4QrDKeHzGCydi15K63dqvcgdMyHQ1lt1Si732Hvu0eeB9aTO2BcEkdyTP4QW6IA==", + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/mediaplex-linux-arm-gnueabihf/-/mediaplex-linux-arm-gnueabihf-0.0.2.tgz", + "integrity": "sha512-Bg5gl3EjrqFZYUZkb/T49kmlFQ25hieT3pnHT8kE7ZHD/PPqoNKwbui4vMWRbdluVmVwgYQDQuigbT48Fad2JQ==", "cpu": [ "arm" ], @@ -2216,9 +2432,9 @@ } }, "node_modules/mediaplex-linux-x64-gnu": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/mediaplex-linux-x64-gnu/-/mediaplex-linux-x64-gnu-0.0.4.tgz", - "integrity": "sha512-877oKhcfT6H0qvHYZGbK7XH9DJlJDIyXT80ir2K0rwpM3UK3TYvxilnp1Pzq3CLZLcj80ZanrZ4PsDE0MSNHvw==", + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/mediaplex-linux-x64-gnu/-/mediaplex-linux-x64-gnu-0.0.2.tgz", + "integrity": "sha512-hDEPM4YVihC8lxcjMDMPDxkl2iMT4guz2uk09ErywrkY22RKbAg4vrCR59iCJEuAmjK3efqzVdOKMIwNpMaG8A==", "cpu": [ "x64" ], @@ -2231,9 +2447,9 @@ } }, "node_modules/mediaplex-win32-arm64-msvc": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/mediaplex-win32-arm64-msvc/-/mediaplex-win32-arm64-msvc-0.0.4.tgz", - "integrity": "sha512-K1lf9jVTEt4h5t3rIa4NaVUnr6yMnCQjIehO5iFBXRpOqT4wQO8dAOCYKVjYaTL9oI57nlXHsOh16f0Bgsb88Q==", + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/mediaplex-win32-arm64-msvc/-/mediaplex-win32-arm64-msvc-0.0.2.tgz", + "integrity": "sha512-sle4fT9Fjc5VF0sMr+ncWftbI+wrr6zrrOmiTvMdpto23ItFBeRzDwthm4mJ2ulVfwMdUBSwx713qzJ40s5HSA==", "cpu": [ "arm64" ], @@ -2246,9 +2462,9 @@ } }, "node_modules/mediaplex-win32-ia32-msvc": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/mediaplex-win32-ia32-msvc/-/mediaplex-win32-ia32-msvc-0.0.4.tgz", - "integrity": "sha512-rDLZdq77QBDE5Y+JjqNbugXcgK0dL/TTiP8GhCbY6pP0xwetDLVKatyYn9PooM/Gk+LSHfjJ4r25gXqktuUUhA==", + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/mediaplex-win32-ia32-msvc/-/mediaplex-win32-ia32-msvc-0.0.2.tgz", + "integrity": "sha512-plHt+L31GvCIVPtE3fxM7xF0P3PIBUWGkaTlpFBTpL+HcbrwaENVMi6cKrZ4Q2AVvifVBT04YA/kXPkdqJoAWQ==", "cpu": [ "ia32" ], @@ -2261,9 +2477,9 @@ } }, "node_modules/mediaplex-win32-x64-msvc": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/mediaplex-win32-x64-msvc/-/mediaplex-win32-x64-msvc-0.0.4.tgz", - "integrity": "sha512-hogJHHBQHm4DaReTh8HkpAFJ6nNGRewjajxDooUP4qPQ+4g5S8RPN3zLl+BQtZYrmubW+LuaAQ1FB5nAFVt1bw==", + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/mediaplex-win32-x64-msvc/-/mediaplex-win32-x64-msvc-0.0.2.tgz", + "integrity": "sha512-DXMY4rdl83s83vn6N7fU6lDiT6ZXPwrMXL2yhtPtliQs0TP0GGZY6HfbDKmE0EJ6bTKNticuBHR9mvYRqQBXIQ==", "cpu": [ "x64" ], @@ -2297,6 +2513,14 @@ "node": ">=8.6" } }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "engines": { + "node": ">=4" + } + }, "node_modules/miniget": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/miniget/-/miniget-4.2.3.tgz", @@ -2453,6 +2677,17 @@ "node": ">=6" } }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/npmlog": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", @@ -2496,7 +2731,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "devOptional": true, "dependencies": { "wrappy": "1" } @@ -2518,6 +2752,14 @@ "node": ">= 0.8.0" } }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "engines": { + "node": ">=8" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -2688,6 +2930,23 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/pino-loki": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/pino-loki/-/pino-loki-2.1.3.tgz", + "integrity": "sha512-CRJh2u3/5JYYLEspjBRiXxKmR759Qo/yylz/efVFLr2CWERBlsndZHscDtfCzYDxT0P47fVLnbAvIAro0PEjag==", + "dependencies": { + "commander": "^10.0.1", + "got": "^11.8.6", + "pino-abstract-transport": "^1.0.0", + "pump": "^3.0.0" + }, + "bin": { + "pino-loki": "dist/cli.cjs" + }, + "funding": { + "url": "https://github.com/sponsors/Julien-R44" + } + }, "node_modules/pino-std-serializers": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", @@ -2826,6 +3085,15 @@ "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.2.0.tgz", "integrity": "sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==" }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", @@ -2860,6 +3128,17 @@ "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -2902,6 +3181,11 @@ "integrity": "sha512-AKGr4qvHiryxRb19m3PsLRGuKVAbJLUD7E6eOaHkfKhwc+vSgVOCY5xNvm9EkolBKTOf0GrQAZKLimOCz81Khg==", "dev": true }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -2911,6 +3195,17 @@ "node": ">=4" } }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -3422,8 +3717,7 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "devOptional": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { "version": "8.13.0", diff --git a/package.json b/package.json index d0159310..04b665c4 100644 --- a/package.json +++ b/package.json @@ -1,46 +1,47 @@ -{ - "name": "cadence-discord-bot", - "version": "4.1.3", - "description": "A free Discord music and audio bot.", - "repository": { - "type": "git", - "url": "https://github.com/mariusbegby/cadence-discord-bot" - }, - "bugs": { - "url": "https://github.com/mariusbegby/cadence-discord-bot/issues" - }, - "homepage": "https://github.com/mariusbegby/cadence-discord-bot#readme", - "author": { - "name": "Marius Begby", - "url": "https://github.com/mariusbegby" - }, - "publisher": "mariusbegby", - "license": "MIT", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "start": "node ./src/index.js", - "start-pretty": "node ./src/index.js | pino-pretty", - "deploy": "node ./src/utils/deploySlashCommands.js", - "deploy-pretty": "node ./src/utils/deploySlashCommands.js | pino-pretty", - "eslint": "eslint ./" - }, - "dependencies": { - "@discord-player/extractor": "^4.4.2-dev.1", - "@discord-player/opus": "^0.1.1", - "@discordjs/rest": "^2.0.0", - "@distube/ytdl-core": "^4.11.17", - "config": "^3.3.9", - "discord-player": "^6.6.3-dev.0", - "discord-voip": "^0.1.2", - "discord.js": "^14.13.0", - "dotenv": "^16.3.1", - "mediaplex": "^0.0.4", - "node-os-utils": "^1.3.7", - "pino": "^8.15.0" - }, - "devDependencies": { - "eslint": "^8.47.0", - "prettier-eslint": "^15.0.1" - } +{ + "name": "cadence-discord-bot", + "version": "4.1.3", + "description": "A free Discord music and audio bot.", + "repository": { + "type": "git", + "url": "https://github.com/mariusbegby/cadence-discord-bot" + }, + "bugs": { + "url": "https://github.com/mariusbegby/cadence-discord-bot/issues" + }, + "homepage": "https://github.com/mariusbegby/cadence-discord-bot#readme", + "author": { + "name": "Marius Begby", + "url": "https://github.com/mariusbegby" + }, + "publisher": "mariusbegby", + "license": "MIT", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "node ./src/index.js", + "start-pretty": "node ./src/index.js | pino-pretty", + "deploy": "node ./src/utils/deploySlashCommands.js", + "deploy-pretty": "node ./src/utils/deploySlashCommands.js | pino-pretty", + "eslint": "eslint ./" + }, + "dependencies": { + "@discord-player/extractor": "^4.4.2-dev.1", + "@discord-player/opus": "^0.1.1", + "@discordjs/rest": "^2.0.0", + "@distube/ytdl-core": "^4.11.17", + "config": "^3.3.9", + "discord-player": "^6.6.3-dev.0", + "discord-voip": "^0.1.2", + "discord.js": "^14.13.0", + "dotenv": "^16.3.1", + "mediaplex": "^0.0.2", + "node-os-utils": "^1.3.7", + "pino": "^8.15.0", + "pino-loki": "^2.1.3" + }, + "devDependencies": { + "eslint": "^8.47.0", + "prettier-eslint": "^15.0.1" + } } diff --git a/src/services/logger.js b/src/services/logger.js index 1ba5ada3..79b806ca 100644 --- a/src/services/logger.js +++ b/src/services/logger.js @@ -42,6 +42,24 @@ const targets = [ } ]; +if (process.env.LOKI_AUTH_PASSWORD && process.env.LOKI_AUTH_USERNAME) { + targets.push({ + target: 'pino-loki', + level: loggerOptions.minimumLogLevel, + options: { + sync: false, + batching: false, + interval: 5, + + host: 'https://logs-prod-025.grafana.net', + basicAuth: { + username: process.env.LOKI_AUTH_USERNAME || '', + password: process.env.LOKI_AUTH_PASSWORD || '' + } + } + }); +} + const transport = pino.transport({ targets }); const logLevelConfig = {