log filter

This commit is contained in:
seb
2026-07-12 18:34:59 +02:00
parent 917930d0fa
commit 3ca6e894ab
3 changed files with 33 additions and 11 deletions

1
.gitignore vendored
View File

@@ -2,3 +2,4 @@ node_modules/
.env .env
certs/ certs/
logs/ logs/
capturedDataReference

1
.npmrc
View File

@@ -1 +0,0 @@
loglevel=silent

View File

@@ -35,6 +35,25 @@ function truncateUrl(url) {
return `${url.slice(0, CONSOLE_URL_MAX_LENGTH)}...`; 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) { function formatBody(buffer) {
if (!buffer.length) { if (!buffer.length) {
return '(empty)'; return '(empty)';
@@ -68,16 +87,20 @@ const loggedJtlHandler = async (req, res) => {
const responseBody = formatBody(responseBuffer); const responseBody = formatBody(responseBuffer);
const durationMs = Date.now() - started; 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({ if (!isInit || shouldLogInit(req.url, res.statusCode, durationMs, responseBody)) {
remoteAddress: req.socket.remoteAddress, logger.info(`${req.socket.remoteAddress} ${req.method} ${truncateUrl(req.url)} ${res.statusCode} ${durationMs}ms`);
method: req.method,
url: req.url, logRequest({
statusCode: res.statusCode, remoteAddress: req.socket.remoteAddress,
durationMs, method: req.method,
response: responseBody, url: req.url,
}); statusCode: res.statusCode,
durationMs,
response: responseBody,
});
}
}; };
const httpsServer = https.createServer( const httpsServer = https.createServer(
@@ -102,7 +125,6 @@ async function start() {
logger.info(`Certificate: ${certPath}`); logger.info(`Certificate: ${certPath}`);
logger.info(`Pairing code: ${PAIRING_CODE}`); logger.info(`Pairing code: ${PAIRING_CODE}`);
logger.info(`Auth token: ${AUTH_TOKEN}`); logger.info(`Auth token: ${AUTH_TOKEN}`);
logger.info('Import cert.pem into JTL POS trust store if required.');
}); });
} }