From 2ac847f3b17a8bc8ab2aa6a449879d15dd780070 Mon Sep 17 00:00:00 2001 From: hzrd149 Date: Wed, 22 Jan 2025 10:32:12 -0600 Subject: [PATCH] Add colors to logging --- .changeset/thirty-bikes-train.md | 5 +++++ package.json | 2 ++ pnpm-lock.yaml | 24 ++++++++++++++++++++++-- src/index.ts | 23 +++++++++++++---------- src/logger.ts | 9 +++++++++ 5 files changed, 51 insertions(+), 12 deletions(-) create mode 100644 .changeset/thirty-bikes-train.md create mode 100644 src/logger.ts diff --git a/.changeset/thirty-bikes-train.md b/.changeset/thirty-bikes-train.md new file mode 100644 index 0000000..ce0aa08 --- /dev/null +++ b/.changeset/thirty-bikes-train.md @@ -0,0 +1,5 @@ +--- +"nsite-ts": minor +--- + +Add colors to logging diff --git a/package.json b/package.json index 1e75412..0fa7f70 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "@keyv/sqlite": "^4.0.1", "@koa/cors": "^5.0.0", "blossom-client-sdk": "^2.1.1", + "debug": "^4.4.0", "dotenv": "^16.4.7", "follow-redirects": "^1.15.9", "keyv": "^5.2.3", @@ -44,6 +45,7 @@ "@swc-node/register": "^1.10.9", "@swc/core": "^1.10.9", "@types/better-sqlite3": "^7.6.12", + "@types/debug": "^4.1.12", "@types/follow-redirects": "^1.14.4", "@types/koa": "^2.15.0", "@types/koa-morgan": "^1.0.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9a3e0b0..c2c3a42 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,12 +23,15 @@ importers: blossom-client-sdk: specifier: ^2.1.1 version: 2.1.1 + debug: + specifier: ^4.4.0 + version: 4.4.0(supports-color@5.5.0) dotenv: specifier: ^16.4.7 version: 16.4.7 follow-redirects: specifier: ^1.15.9 - version: 1.15.9 + version: 1.15.9(debug@4.4.0) keyv: specifier: ^5.2.3 version: 5.2.3 @@ -81,6 +84,9 @@ importers: '@types/better-sqlite3': specifier: ^7.6.12 version: 7.6.12 + '@types/debug': + specifier: ^4.1.12 + version: 4.1.12 '@types/follow-redirects': specifier: ^1.14.4 version: 1.14.4 @@ -477,6 +483,9 @@ packages: '@types/cookies@0.9.0': resolution: {integrity: sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==} + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/express-serve-static-core@5.0.5': resolution: {integrity: sha512-GLZPrd9ckqEBFMcVM/qRFAP0Hg3qiVEojgEFsx/N/zKXsBzbGF6z5FBDpZ0+Xhp1xr+qRZYjfGr1cWHB9oFHSA==} @@ -522,6 +531,9 @@ packages: '@types/morgan@1.9.9': resolution: {integrity: sha512-iRYSDKVaC6FkGSpEVVIvrRGw0DfJMiQzIn3qr2G5B3C//AWkulhXgaBd7tS9/J79GWSYMTHGs7PfI5b3Y8m+RQ==} + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} @@ -2437,6 +2449,10 @@ snapshots: '@types/keygrip': 1.0.6 '@types/node': 20.17.14 + '@types/debug@4.1.12': + dependencies: + '@types/ms': 2.1.0 + '@types/express-serve-static-core@5.0.5': dependencies: '@types/node': 20.17.14 @@ -2504,6 +2520,8 @@ snapshots: dependencies: '@types/node': 20.17.14 + '@types/ms@2.1.0': {} + '@types/node@12.20.55': {} '@types/node@20.17.14': @@ -2967,7 +2985,9 @@ snapshots: locate-path: 5.0.0 path-exists: 4.0.0 - follow-redirects@1.15.9: {} + follow-redirects@1.15.9(debug@4.4.0): + optionalDependencies: + debug: 4.4.0(supports-color@5.5.0) fresh@0.5.2: {} diff --git a/src/index.ts b/src/index.ts index 27ade0f..9c283c5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -27,6 +27,7 @@ import { import { userDomains, userRelays, userServers } from "./cache.js"; import { invalidatePubkeyPath } from "./nginx.js"; import pool, { getUserOutboxes, subscribeForEvents } from "./nostr.js"; +import logger from "./logger.js"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); @@ -76,22 +77,23 @@ app.use(async (ctx, next) => { if (pubkey) { const npub = npubEncode(pubkey); + const log = logger.extend(npub); ctx.state.pubkey = pubkey; let relays = await userRelays.get(pubkey); // fetch relays if not in cache if (!relays) { - console.log(`${npub}: Fetching relays`); + log(`Fetching relays`); relays = await getUserOutboxes(pubkey); if (relays) { await userRelays.set(pubkey, relays); - console.log(`${npub}: Found ${relays.length} relays`); + log(`Found ${relays.length} relays`); } else { relays = []; await userServers.set(pubkey, [], 30_000); - console.log(`${npub}: Failed to find relays`); + log(`Failed to find relays`); } } @@ -99,17 +101,17 @@ app.use(async (ctx, next) => { if (relays.length === 0) throw new Error("No nostr relays"); - console.log(`${npub}: Searching for ${ctx.path}`); + log(`Searching for ${ctx.path}`); let blobs = await getNsiteBlobs(pubkey, ctx.path, relays); if (blobs.length === 0) { // fallback to custom 404 page - console.log(`${npub}: Looking for custom 404 page`); + log(`Looking for custom 404 page`); blobs = await getNsiteBlobs(pubkey, "/404.html", relays); } if (blobs.length === 0) { - console.log(`${npub}: Found 0 events`); + log(`Found 0 events`); ctx.status = 404; ctx.body = "Not Found"; return; @@ -119,16 +121,16 @@ app.use(async (ctx, next) => { // fetch blossom servers if not in cache if (!servers) { - console.log(`${npub}: Fetching blossom servers`); + log(`Fetching blossom servers`); servers = await getUserBlossomServers(pubkey, relays); if (servers) { await userServers.set(pubkey, servers); - console.log(`${npub}: Found ${servers.length} servers`); + log(`Found ${servers.length} servers`); } else { servers = []; await userServers.set(pubkey, [], 30_000); - console.log(`${npub}: Failed to find servers`); + log(`Failed to find servers`); } } @@ -213,7 +215,8 @@ app.listen({ host: NSITE_HOST, port: NSITE_PORT }, () => { // invalidate nginx cache and screenshots on new events if (SUBSCRIPTION_RELAYS.length > 0) { - console.log(`Listening for new nsite events`); + console.log(`Listening for new nsite events on: ${SUBSCRIPTION_RELAYS.join(", ")}`); + subscribeForEvents(SUBSCRIPTION_RELAYS, async (event) => { try { const nsite = parseNsiteEvent(event); diff --git a/src/logger.ts b/src/logger.ts new file mode 100644 index 0000000..7578cbd --- /dev/null +++ b/src/logger.ts @@ -0,0 +1,9 @@ +import debug from "debug"; + +// enable default logging +if (!debug.enabled("nsite")) debug.enable("nsite"); +if (!debug.enabled("nsite:*")) debug.enable("nsite:*"); + +const logger = debug("nsite"); + +export default logger;