我很难登录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,
})
);