33 lines
819 B
JavaScript
33 lines
819 B
JavaScript
import { pinoHttp } from 'pino-http';
|
|
import { logger } from './logger.js';
|
|
|
|
export function requestLog(options = {}) {
|
|
return pinoHttp({
|
|
logger,
|
|
customLogLevel(req, res, err) {
|
|
if (err || res.statusCode >= 500) return 'error';
|
|
if (res.statusCode >= 400) return 'warn';
|
|
return 'info';
|
|
},
|
|
customSuccessMessage(req, res) {
|
|
return `${req.method} ${req.url} ${res.statusCode}`;
|
|
},
|
|
customErrorMessage(req, res, err) {
|
|
return `${req.method} ${req.url} ${res.statusCode} ${err?.message ?? ''}`;
|
|
},
|
|
serializers: {
|
|
req(req) {
|
|
return {
|
|
method: req.method,
|
|
url: req.url,
|
|
userId: req.raw?.user?.id,
|
|
};
|
|
},
|
|
res(res) {
|
|
return { statusCode: res.statusCode };
|
|
},
|
|
},
|
|
...options,
|
|
});
|
|
}
|