Add colors to logging

This commit is contained in:
hzrd149 2025-01-22 10:32:12 -06:00
parent 5be0822410
commit 2ac847f3b1
5 changed files with 51 additions and 12 deletions

View File

@ -0,0 +1,5 @@
---
"nsite-ts": minor
---
Add colors to logging

View File

@ -23,6 +23,7 @@
"@keyv/sqlite": "^4.0.1", "@keyv/sqlite": "^4.0.1",
"@koa/cors": "^5.0.0", "@koa/cors": "^5.0.0",
"blossom-client-sdk": "^2.1.1", "blossom-client-sdk": "^2.1.1",
"debug": "^4.4.0",
"dotenv": "^16.4.7", "dotenv": "^16.4.7",
"follow-redirects": "^1.15.9", "follow-redirects": "^1.15.9",
"keyv": "^5.2.3", "keyv": "^5.2.3",
@ -44,6 +45,7 @@
"@swc-node/register": "^1.10.9", "@swc-node/register": "^1.10.9",
"@swc/core": "^1.10.9", "@swc/core": "^1.10.9",
"@types/better-sqlite3": "^7.6.12", "@types/better-sqlite3": "^7.6.12",
"@types/debug": "^4.1.12",
"@types/follow-redirects": "^1.14.4", "@types/follow-redirects": "^1.14.4",
"@types/koa": "^2.15.0", "@types/koa": "^2.15.0",
"@types/koa-morgan": "^1.0.8", "@types/koa-morgan": "^1.0.8",

24
pnpm-lock.yaml generated
View File

@ -23,12 +23,15 @@ importers:
blossom-client-sdk: blossom-client-sdk:
specifier: ^2.1.1 specifier: ^2.1.1
version: 2.1.1 version: 2.1.1
debug:
specifier: ^4.4.0
version: 4.4.0(supports-color@5.5.0)
dotenv: dotenv:
specifier: ^16.4.7 specifier: ^16.4.7
version: 16.4.7 version: 16.4.7
follow-redirects: follow-redirects:
specifier: ^1.15.9 specifier: ^1.15.9
version: 1.15.9 version: 1.15.9(debug@4.4.0)
keyv: keyv:
specifier: ^5.2.3 specifier: ^5.2.3
version: 5.2.3 version: 5.2.3
@ -81,6 +84,9 @@ importers:
'@types/better-sqlite3': '@types/better-sqlite3':
specifier: ^7.6.12 specifier: ^7.6.12
version: 7.6.12 version: 7.6.12
'@types/debug':
specifier: ^4.1.12
version: 4.1.12
'@types/follow-redirects': '@types/follow-redirects':
specifier: ^1.14.4 specifier: ^1.14.4
version: 1.14.4 version: 1.14.4
@ -477,6 +483,9 @@ packages:
'@types/cookies@0.9.0': '@types/cookies@0.9.0':
resolution: {integrity: sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==} 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': '@types/express-serve-static-core@5.0.5':
resolution: {integrity: sha512-GLZPrd9ckqEBFMcVM/qRFAP0Hg3qiVEojgEFsx/N/zKXsBzbGF6z5FBDpZ0+Xhp1xr+qRZYjfGr1cWHB9oFHSA==} resolution: {integrity: sha512-GLZPrd9ckqEBFMcVM/qRFAP0Hg3qiVEojgEFsx/N/zKXsBzbGF6z5FBDpZ0+Xhp1xr+qRZYjfGr1cWHB9oFHSA==}
@ -522,6 +531,9 @@ packages:
'@types/morgan@1.9.9': '@types/morgan@1.9.9':
resolution: {integrity: sha512-iRYSDKVaC6FkGSpEVVIvrRGw0DfJMiQzIn3qr2G5B3C//AWkulhXgaBd7tS9/J79GWSYMTHGs7PfI5b3Y8m+RQ==} resolution: {integrity: sha512-iRYSDKVaC6FkGSpEVVIvrRGw0DfJMiQzIn3qr2G5B3C//AWkulhXgaBd7tS9/J79GWSYMTHGs7PfI5b3Y8m+RQ==}
'@types/ms@2.1.0':
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
'@types/node@12.20.55': '@types/node@12.20.55':
resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
@ -2437,6 +2449,10 @@ snapshots:
'@types/keygrip': 1.0.6 '@types/keygrip': 1.0.6
'@types/node': 20.17.14 '@types/node': 20.17.14
'@types/debug@4.1.12':
dependencies:
'@types/ms': 2.1.0
'@types/express-serve-static-core@5.0.5': '@types/express-serve-static-core@5.0.5':
dependencies: dependencies:
'@types/node': 20.17.14 '@types/node': 20.17.14
@ -2504,6 +2520,8 @@ snapshots:
dependencies: dependencies:
'@types/node': 20.17.14 '@types/node': 20.17.14
'@types/ms@2.1.0': {}
'@types/node@12.20.55': {} '@types/node@12.20.55': {}
'@types/node@20.17.14': '@types/node@20.17.14':
@ -2967,7 +2985,9 @@ snapshots:
locate-path: 5.0.0 locate-path: 5.0.0
path-exists: 4.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: {} fresh@0.5.2: {}

View File

@ -27,6 +27,7 @@ import {
import { userDomains, userRelays, userServers } from "./cache.js"; import { userDomains, userRelays, userServers } from "./cache.js";
import { invalidatePubkeyPath } from "./nginx.js"; import { invalidatePubkeyPath } from "./nginx.js";
import pool, { getUserOutboxes, subscribeForEvents } from "./nostr.js"; import pool, { getUserOutboxes, subscribeForEvents } from "./nostr.js";
import logger from "./logger.js";
const __dirname = path.dirname(fileURLToPath(import.meta.url)); const __dirname = path.dirname(fileURLToPath(import.meta.url));
@ -76,22 +77,23 @@ app.use(async (ctx, next) => {
if (pubkey) { if (pubkey) {
const npub = npubEncode(pubkey); const npub = npubEncode(pubkey);
const log = logger.extend(npub);
ctx.state.pubkey = pubkey; ctx.state.pubkey = pubkey;
let relays = await userRelays.get<string[] | undefined>(pubkey); let relays = await userRelays.get<string[] | undefined>(pubkey);
// fetch relays if not in cache // fetch relays if not in cache
if (!relays) { if (!relays) {
console.log(`${npub}: Fetching relays`); log(`Fetching relays`);
relays = await getUserOutboxes(pubkey); relays = await getUserOutboxes(pubkey);
if (relays) { if (relays) {
await userRelays.set(pubkey, relays); await userRelays.set(pubkey, relays);
console.log(`${npub}: Found ${relays.length} relays`); log(`Found ${relays.length} relays`);
} else { } else {
relays = []; relays = [];
await userServers.set(pubkey, [], 30_000); 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"); 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); let blobs = await getNsiteBlobs(pubkey, ctx.path, relays);
if (blobs.length === 0) { if (blobs.length === 0) {
// fallback to custom 404 page // 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); blobs = await getNsiteBlobs(pubkey, "/404.html", relays);
} }
if (blobs.length === 0) { if (blobs.length === 0) {
console.log(`${npub}: Found 0 events`); log(`Found 0 events`);
ctx.status = 404; ctx.status = 404;
ctx.body = "Not Found"; ctx.body = "Not Found";
return; return;
@ -119,16 +121,16 @@ app.use(async (ctx, next) => {
// fetch blossom servers if not in cache // fetch blossom servers if not in cache
if (!servers) { if (!servers) {
console.log(`${npub}: Fetching blossom servers`); log(`Fetching blossom servers`);
servers = await getUserBlossomServers(pubkey, relays); servers = await getUserBlossomServers(pubkey, relays);
if (servers) { if (servers) {
await userServers.set(pubkey, servers); await userServers.set(pubkey, servers);
console.log(`${npub}: Found ${servers.length} servers`); log(`Found ${servers.length} servers`);
} else { } else {
servers = []; servers = [];
await userServers.set(pubkey, [], 30_000); 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 // invalidate nginx cache and screenshots on new events
if (SUBSCRIPTION_RELAYS.length > 0) { 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) => { subscribeForEvents(SUBSCRIPTION_RELAYS, async (event) => {
try { try {
const nsite = parseNsiteEvent(event); const nsite = parseNsiteEvent(event);

9
src/logger.ts Normal file
View File

@ -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;