mirror of
https://github.com/lux-tel/session-desktop.git
synced 2026-10-30 20:33:24 +00:00
35 lines
916 B
TypeScript
35 lines
916 B
TypeScript
import pino, { type StreamEntry } from 'pino';
|
|
import { createRotatingPinoDest } from './rotatingPinoDest';
|
|
|
|
export function buildPinoLogger(logFile: string, onStreamClosed: () => void) {
|
|
const hasDebugLoggingEnabled = !!process.env.SESSION_DEBUG;
|
|
const rotatingStream = createRotatingPinoDest({
|
|
logFile,
|
|
});
|
|
|
|
rotatingStream.on('close', onStreamClosed);
|
|
rotatingStream.on('error', onStreamClosed);
|
|
|
|
const streams = new Array<StreamEntry>();
|
|
|
|
const levelToLog: pino.Level = hasDebugLoggingEnabled ? 'debug' : 'info';
|
|
|
|
streams.push({ level: levelToLog, stream: rotatingStream });
|
|
streams.push({
|
|
level: levelToLog,
|
|
stream: process.stdout,
|
|
});
|
|
|
|
return pino(
|
|
{
|
|
formatters: {
|
|
// No point in saving pid or hostname
|
|
bindings: () => ({}),
|
|
},
|
|
timestamp: pino.stdTimeFunctions.isoTime,
|
|
level: levelToLog,
|
|
},
|
|
pino.multistream(streams)
|
|
);
|
|
}
|