How to use the winston.format function in winston

To help you get started, we’ve selected a few winston examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github Azure / azure-xplat-cli / lib / cli.js View on Github external
return self.action(function () {
      self.setupCommandOutput();

      if (log.format().json) {
        log.verbose('Executing command ' + self.fullName().bold);
      } else {
        log.info('Executing command ' + self.fullName().bold);
      }

      try {
        // pass no more arguments than the function expects, including options and callback at the end (unless it expects 0 or 1)
        var argCount = fn.length <= 1 ? arguments.length : fn.length - 1; // not including callback
        var args = new Array(argCount);
        var optionIndex = arguments.length - 1;
        for (var i = 0; i < arguments.length; ++i) {
          if (typeof arguments[i] === 'object') {
            optionIndex = i;
            break;
          }
          if (i < argCount - 1) {
github ReactFinland / graphql-api / server / logger.ts View on Github external
// https://github.com/amazeeio/lagoon/blob/master/services/api/src/logger.js
import * as fs from "fs";
import * as path from "path";
import { isString } from "util";
import { createLogger, format, transports } from "winston";

// Create the logs directory if it doesn't exist yet.
const directory = path.join(".", "logs");
if (!fs.existsSync(directory)) {
  fs.mkdirSync(directory);
}

const ignorePingAndMedia = format(info => {
  const message = info.message;

  if (
    isString(message) &&
    ["GET /ping ", "GET /media"].some(match => message.includes(match))
  ) {
    return false;
  }

  return info;
});

const logger = createLogger({
  exitOnError: false,
  format: format.combine(ignorePingAndMedia(), format.json()),
  transports: [
github Azure / azure-xplat-cli / lib / cli.js View on Github external
progress: function(label) {
    var self = this;

    var verbose = log.format().json || log.format().level === 'verbose' || log.format().level === 'silly';
    if (!self.istty1 || verbose)  {
      (verbose ? log.verbose : log.info)(label);
      return { end: function() {} };
    }

    // clear any previous progress
    self.clearProgress();

    // Clear the console
    fs.writeSync(1, '\r' + self.clearBuffer);

    // Draw initial progress
    self.drawAndUpdateProgress();

    // Draw label
    if (label) {
github eclipse-iofog / Controller / src / logger / index.js View on Github external
info: 6,
  verbose: 7,
  debug: 8,
  silly: 9
}

const formattedJson = winston.format((log) => {
  let sortedFields = ['level', 'timestamp', 'message']
  if (log.args) {
    sortedFields = sortedFields.concat(['args']).concat(getAllObjKeys(log.args))
  }
  log[MESSAGE] = JSON.stringify(log, sortedFields)
  return log
})

const prepareObjectLogs = winston.format((log) => {
  if (!(log.message instanceof Object)) {
    return log
  }

  if (log.level === 'apiReq' && log.message instanceof Object) {
    const req = log.message
    log.message = `${req.method} ${req.originalUrl}`
    log.args = { params: req.params, query: req.query, body: req.body }
  }
  if (log.level === 'apiRes' && log.message instanceof Object) {
    const req = log.message.req
    const res = log.message.res
    log.message = `${req.method} ${req.originalUrl}`
    log.args = res
  }
  return log
github shfshanyue / apollo-server-starter / lib / logger.ts View on Github external
import winston, { format } from 'winston'
import os from 'os'
import { session } from './session'

const requestId = format((info) => {
  info.requestId = session.get('requestId')
  return info
})

function createLogger (label: string) {
  return winston.createLogger({
    defaultMeta: {
      serverName: os.hostname(),
      label
    },
    format: format.combine(
      format.timestamp(),
      requestId(),
      format.json()
    ),
    transports: [
github ashiina / lambda-local / lib / utils.js View on Github external
var _getWinstonConsole = function() {
    const winston = require("winston");
    const {combine, colorize, simple} = winston.format;
    const _simple = simple();
    const myFormat = winston.format(info => {
        const stringifiedRest = processJSON(Object.assign({}, info, {
            level: undefined,
            message: undefined,
            splat: undefined
        }));
        var new_info = {level: info.level, message: info.message};
        if (new_info.message == undefined){
            new_info.message = "";
        }
        if (stringifiedRest !== '{}') {
            new_info.message += stringifiedRest;
        }
        return _simple.transform(new_info);
    });

    const logger = winston.createLogger({
github Coding-Coach / coding-coach-api / src / logger.js View on Github external
}

const MESSAGE = Symbol.for('message');

const jsonFormatter = (logEntry) => {
  const modifiedLog = logEntry;
  const base = {
    timestamp: new Date(),
  };
  const json = Object.assign(base, logEntry);
  modifiedLog[MESSAGE] = JSON.stringify(json);
  return modifiedLog;
};

const logger = winston.createLogger({
  format: winston.format(jsonFormatter)(),
  transports: [
    new winston.transports.File({
      level: 'info',
      filename: `${process.env.LOGS_FOLDER}/${process.env.INFO_LOG || 'info.log'}`,
      handleExceptions: true,
      json: true,
    }),
    new winston.transports.File({
      level: 'error',
      filename: `${process.env.LOGS_FOLDER}/${process.env.ERROR_LOG || 'error.log'}`,
      handleExceptions: true,
      json: true,
    }),
    new winston.transports.File({
      level: 'warn',
      filename: `${process.env.LOGS_FOLDER}/${process.env.WARNINGS_LOG || 'warn.log'}`,
github accordproject / cicero / packages / cicero-core / src / logger.js View on Github external
* Helper function to test is a string is a stringified version of a JSON object
 * @param {string} str - the input string to test
 * @returns {boolean} - true iff the string can be parsed as JSON
 * @private
 */
function isJSON(str) {
    try {
        return (JSON.parse(str) && !!str);
    } catch (e) {
        return false;
    }
}

jsome.params.lintable = true;

const jsonColor =  winston.format(info => {
    const padding = info.padding && info.padding[info.level] || '';

    if(info[LEVEL] === 'error' && info.stack) {
        info[MESSAGE] = `${tsFormat()} - ${info.level}:${padding} ${info.message}\n${info.stack}`;
        return info;
    }

    if (info[LEVEL] === 'info') {
        if(typeof info.message === 'object') {
            info[MESSAGE] = `${tsFormat()} - ${info.level}:${padding}\n${jsome.getColoredString(info.message, null, 2)}`;
        } else if(isJSON(info.message)) {
            info[MESSAGE] =`${tsFormat()} - ${info.level}:${padding}\n${jsome.getColoredString(JSON.parse(info.message), null, 2)}`;
        } else {
            info[MESSAGE] = `${tsFormat()} - ${info.level}:${padding} ${info.message}`;
        }
        return info;
github linkedpipes / etl / web-client / server / logging.js View on Github external
function parametersToMessage() {
  return winston.format((info) => {
    if (info[SPLAT]) {
      return {
        ...info,
        "message": info.message + info[SPLAT].join(" "),
      };
    }
    return info;
  })();
}
github bitrinjani / r2 / src / logger.ts View on Github external
import { format as formatDate } from 'date-fns';
import * as path from 'path';
import { createLogger, format, transports } from 'winston';
const { combine, timestamp, label, printf } = format;
import * as util from 'util';
import { mkdir } from './util';

const mysplat = format((info) => {
  if (info.splat) {
    info.message = util.format(info.message, ...info.splat);
    info.splat = undefined;
  }
  return info;
});

const logdir = './logs';

export function getLogger(name: string): Logger {
  mkdir(logdir);
  const localtime = () => formatDate(new Date(), 'YYYY-MM-DD HH:mm:ss.SSS');
  const formatForConsole = combine(
    mysplat(), 
    format.colorize(), 
    printf(info => `[${info.level}] ${info.message}`)