基于日志级别和nodeJS控制台日志的Pino日志记录器自定义目的地



我很难登录Stdout和登录文件。是否有一种方法可以根据日志级别登录标准输出,同时登录文件?

到目前为止,我的代码目前正在基于当前级别登录文本文件。例如,如果日志是info,它会去info.log,如果错误,它会去error.log,但我想要的是在文本文件和nodejs控制台。但是我做不到。

下面是我当前的代码:

const levels = {
error: 50,
info: 20,
debug: 10,
};
const streams = Object.keys(levels).map((level) => {
return  {
level: level,
stream: fs.createWriteStream(`${__dirname}/app-${level}.log`, {
flags: "a",
}),
};
});
module.exports = pinoLogger(
{
level: "info",
customLevels: levels,
useOnlyCustomLevels: true,
formatters: {
level: (label) => {
return { level: label };
},
},
},
pinoms.multistream(streams, {
levels,
dedupe: true,
})
);

测试代码:

pinoLogger.error("Test 1");

这个测试代码将"app-error.log"W/c正确,但是就像我说的,我也希望它到nodejs控制台。谢谢:)

谢谢你的代码,真的对我有好处。试着添加如下的传输部分,希望对您有所帮助。

module.exports = pinoLogger(
{
level: "info",
customLevels: levels,
useOnlyCustomLevels: true,
formatters: {
level: (label) => {
return { level: label };
},
},
transport: {
target: 'pino-pretty',
options: {
colorize: true,
translateTime: 'SYS:yyyy-mm-dd hh:MM:ss',
ignore: 'pid',
},
},
},
pinoms.multistream(streams, {
levels,
dedupe: true,
})
);

最新更新