推荐答案
在 Fastify 中,可以通过 logger 选项来配置日志级别。以下是一个示例:
// www.javascriptcn.com code example
const fastify = require('fastify')({
logger: {
level: 'info',
prettyPrint: true
}
});
fastify.get('/', async (request, reply) => {
return { hello: 'world' };
});
fastify.listen(3000, (err) => {
if (err) {
fastify.log.error(err);
process.exit(1);
}
});在这个示例中,logger.level 被设置为 'info',这意味着 Fastify 将记录 info 级别及以上的日志(如 warn 和 error)。prettyPrint 选项用于格式化日志输出,使其更易于阅读。
本题详细解读
日志级别
Fastify 使用 Pino 作为其日志库,Pino 支持以下日志级别(从低到高):
tracedebuginfowarnerrorfatal
在配置 logger.level 时,Fastify 将记录指定级别及以上的日志。例如,如果设置为 'info',则 info、warn、error 和 fatal 级别的日志都会被记录。
配置选项
除了 level,logger 对象还支持其他配置选项,例如:
prettyPrint: 布尔值,用于启用或禁用日志的格式化输出。serializers: 自定义日志序列化器,用于控制日志输出的格式。redact: 用于隐藏敏感信息,如密码或令牌。
示例扩展
以下是一个更复杂的日志配置示例:
// www.javascriptcn.com code example
const fastify = require('fastify')({
logger: {
level: 'debug',
prettyPrint: {
colorize: true,
translateTime: 'HH:MM:ss Z',
ignore: 'pid,hostname'
},
serializers: {
req: (req) => {
return {
method: req.method,
url: req.url,
headers: req.headers
};
}
}
}
});
fastify.get('/', async (request, reply) => {
return { hello: 'world' };
});
fastify.listen(3000, (err) => {
if (err) {
fastify.log.error(err);
process.exit(1);
}
});在这个示例中,prettyPrint 配置了颜色输出和时间格式,serializers 自定义了请求日志的输出格式。
通过这种方式,你可以根据需求灵活配置 Fastify 的日志系统。