This commit is contained in:
seb
2026-07-15 23:11:32 +02:00
parent 1de4144ae2
commit 72b74f5037
4 changed files with 52 additions and 76 deletions

View File

@@ -36,33 +36,14 @@ function truncateUrl(url) {
return `${url.slice(0, CONSOLE_URL_MAX_LENGTH)}...`;
}
const lastInitState = { url: '', result: '', timestamp: 0 };
let suppressedCount = 0;
let lastLoggedInitUrl = null;
let suppressedInitCount = 0;
setInterval(() => {
if (suppressedCount > 0) {
logger.info(`Suppressed ${suppressedCount} init log(s) in the last hour`);
suppressedCount = 0;
function flushSuppressedInitLogs() {
if (suppressedInitCount > 0) {
logger.info(`Suppressed ${suppressedInitCount} duplicate init log(s)`);
suppressedInitCount = 0;
}
}, 60 * 60 * 1000);
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) {
lastInitState.timestamp = now;
suppressedCount++;
return false;
}
lastInitState.url = url;
lastInitState.result = responseBody;
lastInitState.timestamp = now;
return true;
}
function formatBody(buffer) {
@@ -100,18 +81,27 @@ const loggedJtlHandler = async (req, res) => {
const durationMs = Date.now() - started;
const isInit = req.url.startsWith('/api/v1/init');
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,
});
if (isInit) {
if (lastLoggedInitUrl === req.url) {
suppressedInitCount++;
return;
}
lastLoggedInitUrl = req.url;
} else {
flushSuppressedInitLogs();
lastLoggedInitUrl = null;
}
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(