kimi-code / packages /kap-server /src /requestLogging.ts
SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
4e23b01 verified
Raw
History Blame Contribute Delete
1.22 kB
import type { FastifyInstance, FastifyReply } from 'fastify';
export function extractEnvelopeCode(payload: unknown): number | undefined {
if (typeof payload !== 'string') {
return undefined;
}
const match = /^\s*\{\s*"code"\s*:\s*(-?\d+)/.exec(payload);
if (match === null) {
return undefined;
}
const code = Number(match[1]);
return Number.isSafeInteger(code) ? code : undefined;
}
export function registerRequestLogging(app: FastifyInstance): void {
const codes = new WeakMap<FastifyReply, number>();
app.addHook('onSend', (req, reply, payload, done) => {
const code = extractEnvelopeCode(payload);
if (code !== undefined) {
codes.set(reply, code);
}
done(null, payload);
});
app.addHook('onResponse', (req, reply, done) => {
req.log.info(
{
req: {
method: req.method,
url: req.url,
version: req.headers['accept-version'],
host: req.host,
remoteAddress: req.ip,
remotePort: req.socket === undefined ? undefined : req.socket.remotePort,
},
code: codes.get(reply),
responseTime: reply.elapsedTime,
},
'request completed',
);
done();
});
}