pino.js 943 B
Newer Older
Amaury Martiny's avatar
Amaury Martiny committed
// Copyright 2015-2018 Parity Technologies (UK) Ltd.
// This file is part of Parity.
//
Amaury Martiny's avatar
Amaury Martiny committed
// SPDX-License-Identifier: BSD-3-Clause
import { app } from 'electron';
import fs from 'fs';
import { multistream } from 'pino-multi-stream';
import pino from 'pino';
Amaury Martiny's avatar
Amaury Martiny committed

// Pino by default outputs JSON. We prettify that.
const pretty = pino.pretty();
pretty.pipe(process.stdout);

// Create 2 output streams:
// - parity.log file (raw JSON)
// - stdout (prettified output)
const streams = [
  {
    level: 'info',
    stream: fs.createWriteStream(`${app.getPath('userData')}/parity.log`)
  },
  { level: 'info', stream: pretty }
];

/**
Amaury Martiny's avatar
Amaury Martiny committed
 * Create a pino instance
Amaury Martiny's avatar
Amaury Martiny committed
 * @param {Object} opts - Options to pass to pino. Defaults to { name: 'electron' }.
Amaury Martiny's avatar
Amaury Martiny committed
 * @example
 * import Pino from './utils/pino';
 * const pino1 = Pino();
 * const pino2 = Pino({ name: 'parity' });
Amaury Martiny's avatar
Amaury Martiny committed
 */
export default opts =>
Amaury Martiny's avatar
Amaury Martiny committed
  pino({ name: 'electron', ...opts }, multistream(streams));