我正在分享这一点,因为我很难让皮诺记录器同时写入STDOUT和日志文件:
const dest = new stream.PassThrough();
dest.pipe(process.stdout);
dest.pipe(fs.createWriteStream('/logs/file.log', { flags: 'a' }));
const logger = pino({ level: 'info' }, dest);
由于这看起来很低,我想知道这是否是正确的做法。
有点晚了,但pino-multi-stream
可能是您想要的。我在这里遵循了这一部分,它在TypeScript中对我有用。你可以试试这样的东西:
const fs = require('fs');
const pinoms = require('pino-multi-stream')
const streams = [
{ stream: process.stdout },
{ stream: fs.createWriteStream('/logs/file.log', { flags: 'a' }) },
]
const logger = pino({ level: 'info' }, pinoms.multistream(streams));
如果您使用的是皮诺7+,您可以使用以下内容:
const transport = pino.transport({
targets: [
{
level: 'trace',
target: 'pino/file',
options: {
destination: logPath,
},
},
{
level: 'trace',
target: 'pino-pretty',
options: {},
},
],
});
export const log = pino(options, transport);