From 3ca6e894ab24acd42faf6af1a6eedad6aac6cdda Mon Sep 17 00:00:00 2001 From: seb Date: Sun, 12 Jul 2026 18:34:59 +0200 Subject: [PATCH] log filter --- .gitignore | 1 + .npmrc | 1 - server.js | 42 ++++++++++++++++++++++++++++++++---------- 3 files changed, 33 insertions(+), 11 deletions(-) delete mode 100644 .npmrc diff --git a/.gitignore b/.gitignore index 7f7f36b..b9213ac 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ node_modules/ .env certs/ logs/ +capturedDataReference \ No newline at end of file diff --git a/.npmrc b/.npmrc deleted file mode 100644 index 2ae2317..0000000 --- a/.npmrc +++ /dev/null @@ -1 +0,0 @@ -loglevel=silent diff --git a/server.js b/server.js index a839c85..04de48b 100644 --- a/server.js +++ b/server.js @@ -35,6 +35,25 @@ function truncateUrl(url) { return `${url.slice(0, CONSOLE_URL_MAX_LENGTH)}...`; } +const lastInitState = { url: '', result: '', timestamp: 0 }; + +function shouldLogInit(url, statusCode, durationMs, responseBody) { + if (statusCode !== 200) return true; + if (durationMs > 400) return true; + + const now = Date.now(); + const timeSinceLast = now - lastInitState.timestamp; + + if (timeSinceLast < 30_000 && url === lastInitState.url && responseBody === lastInitState.result) { + return false; + } + + lastInitState.url = url; + lastInitState.result = responseBody; + lastInitState.timestamp = now; + return true; +} + function formatBody(buffer) { if (!buffer.length) { return '(empty)'; @@ -68,16 +87,20 @@ const loggedJtlHandler = async (req, res) => { const responseBody = formatBody(responseBuffer); const durationMs = Date.now() - started; - logger.info(`${req.socket.remoteAddress} ${req.method} ${truncateUrl(req.url)} ${res.statusCode} ${durationMs}ms`); + const isInit = req.url.startsWith('/api/v1/init'); - logRequest({ - remoteAddress: req.socket.remoteAddress, - method: req.method, - url: req.url, - statusCode: res.statusCode, - durationMs, - response: responseBody, - }); + if (!isInit || shouldLogInit(req.url, res.statusCode, durationMs, responseBody)) { + logger.info(`${req.socket.remoteAddress} ${req.method} ${truncateUrl(req.url)} ${res.statusCode} ${durationMs}ms`); + + logRequest({ + remoteAddress: req.socket.remoteAddress, + method: req.method, + url: req.url, + statusCode: res.statusCode, + durationMs, + response: responseBody, + }); + } }; const httpsServer = https.createServer( @@ -102,7 +125,6 @@ async function start() { logger.info(`Certificate: ${certPath}`); logger.info(`Pairing code: ${PAIRING_CODE}`); logger.info(`Auth token: ${AUTH_TOKEN}`); - logger.info('Import cert.pem into JTL POS trust store if required.'); }); }