Winston: рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рд╕рдВрдкрддреНрддрд┐ 'json' рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 10 рдирд╡ре░ 2017  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: winstonjs/winston

рдореБрдЦрдкреГрд╖реНрда рдкрд░ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореБрдЭреЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

/Users/owner/path/log.js:7
    format: winston.format.json(),
                          ^

TypeError: Cannot read property 'json' of undefined
    at Object.setupLogging (/Users/owner/path/log.js:7:27)
    at Object.<anonymous> (/Users/owner/path/server.js:35:8)
    at Module._compile (module.js:573:30)
    at Object.Module._extensions..js (module.js:584:10)
    at Module.load (module.js:507:32)
    at tryModuleLoad (module.js:470:12)
    at Function.Module._load (module.js:462:3)
    at Function.Module.runMain (module.js:609:10)
    at startup (bootstrap_node.js:158:16)
    at bootstrap_node.js:578:3
const winston = require('winston');

function setupLogging(app) {
  const logger = winston.createLogger({
    level: 'info',
    format: winston.format.json(),
    transports: [
      //
      // - Write to all logs with level `info` and below to `combined.log`
      // - Write all logs error (and below) to `error.log`.
      //
      new winston.transports.File({ filename: 'error.log', level: 'error' }),
      new winston.transports.File({ filename: 'combined.log' }),
    ],
  });

  //
  // If we're not in production then log to the `console` with the format:
  // `${info.level}: ${info.message} JSON.stringify({ ...rest }) `
  //
  if (process.env.NODE_ENV !== 'production') {
    logger.add(new winston.transports.Console({
      format: winston.format.simple(),
      colorize: true,
    }));
  }

}

module.exports = {
  setupLogging,
};

package.json рд╕реВрдЪреА "winston": "^2.4.0"

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛: readme.md рд╕рдВрд╕реНрдХрд░рдг 3 рдХреЗ рд▓рд┐рдП рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдВрд╕реНрдХрд░рдг 2 рд╣реИред

рдореБрдЦрдкреГрд╖реНрда v3 рдЙрдкрдпреЛрдЧ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди npm рдЕрднреА рднреА v2 рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИред

рдореБрдЦрдкреГрд╖реНрда рдХреЛ рд╢рд╛рдпрдж рдЗрд╕рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

screen shot 2017-11-10 at 4 51 49 pm

рд╕рднреА 9 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

console.log(winston);

рдЖрдЙрдЯрдкреБрдЯ:

{ version: '2.4.0',
  transports: 
   { Console: [Getter],
     File: [Getter],
     Http: [Getter],
     Memory: [Getter] },
  hash: [Function],
  clone: [Function],
  longestElement: [Function],
  exception: 
   { getAllInfo: [Function],
     getProcessInfo: [Function],
     getOsInfo: [Function],
     getTrace: [Function] },
  config: 
   { allColors: 
      { ... },
     addColors: [Function],
     colorize: [Function],
     cli: { levels: [Object], colors: [Object] },
     npm: { levels: [Object], colors: [Object] },
     syslog: { levels: [Object], colors: [Object] } },
  addColors: [Function],
  Container: [Function],
  Logger: 
   { [Function]
     super_: 
      { [Function: EventEmitter]
        EventEmitter: [Circular],
        usingDomains: false,
        defaultMaxListeners: [Getter/Setter],
        init: [Function],
        listenerCount: [Function] } },
  Transport: 
   { [Function]
     super_: 
      { [Function: EventEmitter]
        EventEmitter: [Circular],
        usingDomains: false,
        defaultMaxListeners: [Getter/Setter],
        init: [Function],
        listenerCount: [Function] } },
  loggers: { loggers: {}, options: {}, default: { transports: [Array] } },
  levels: { error: 0, warn: 1, info: 2, verbose: 3, debug: 4, silly: 5 },
  error: [Function],
  warn: [Function],
  info: [Function],
  verbose: [Function],
  debug: [Function],
  silly: [Function],
  log: [Function],
  query: [Function],
  stream: [Function],
  add: [Function],
  remove: [Function],
  clear: [Function],
  profile: [Function],
  startTimer: [Function],
  extend: [Function],
  cli: [Function],
  handleExceptions: [Function],
  unhandleExceptions: [Function],
  configure: [Function],
  setLevels: [Function] }

createLogger рдпрд╛ format рд╕рдВрдкрддреНрддрд┐ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

рд╕реНрд░реЛрдд рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ createLogger рдирд┐рд░реНрдпрд╛рдд рд╡рд╕реНрддреБ рдкрд░ рд╣реИред

рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛: readme.md рд╕рдВрд╕реНрдХрд░рдг 3 рдХреЗ рд▓рд┐рдП рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдВрд╕реНрдХрд░рдг 2 рд╣реИред

рдореБрдЦрдкреГрд╖реНрда v3 рдЙрдкрдпреЛрдЧ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди npm рдЕрднреА рднреА v2 рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИред

рдореБрдЦрдкреГрд╖реНрда рдХреЛ рд╢рд╛рдпрдж рдЗрд╕рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

screen shot 2017-11-10 at 4 51 49 pm

рддреАрди рдорд╣реАрдиреЗ рд╣реЛ рдЧрдП рд╣реИрдВ рдФрд░ рдЕрднреА рднреА рдпрд╣реА рд╕реНрдерд┐рддрд┐ рд╣реИред

рдмрд╕ рдЗрд╕реА рд╕реЗ рдЪреБрдн рдЧрдпрд╛ред

рдкреАрдЖрд░ рджреЗрдЦреЗрдВ: https://github.com/winstonjs/winston/pull/1198

рдЙрд╕реА рдЬрд╛рд▓ рдореЗрдВ рдлрдВрд╕ рдЧрдПред рд▓реЗрдХрд┐рди рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ _(уГД)_/┬п

v3 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ:

npm i winston<strong i="6">@next</strong> --save

рдзрдиреНрдпрд╡рд╛рдж ... рдПрдХ рдЯрди ... рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдм рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд╕реЗ рдмреАрдУрдЯреА рдмрд┐рд▓реНрдбрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде (рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) ... рдЕрдм рдпрд╣ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ: рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐: рд╕реНрдЯреНрд░рд┐рдВрдЧ 'рдПрдЪ' рдкрд░ рд╕рдВрдкрддреНрддрд┐ 'рдкреНрд░рддреАрдХ (рд╕реНрддрд░)' рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддрд╛

рдХреЛрдИ рдорджрдж?

@ sanjivsingh22 рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд╣ рдХреНрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ред

  1. рдЬрдм рддрдХ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд░реЛрдд рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЯреНрд░рд╛рдВрд╕-рдкрд╛рдЗрд▓ рдирд╣реАрдВ рдХрд░рддрд╛, рддрдм рддрдХ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдХреЛрдб рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВред
  2. рдХреЛрдб рдХреА рд╕рдЯреАрдХ рдкрдВрдХреНрддрд┐ рдЦреЛрдЬреЗрдВ рдЬреЛ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИ
  3. рдЙрд╕ рдХреЛрдб рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдиреЛрдЯреЗрд╢рди рдбрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдЬреИрд╕реЗ: рд╕реНрдЯреНрд░рд┐рдВрдЧ, рд╕рдВрдЦреНрдпрд╛ред рдХреЛрдИ рднреА...

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдХрд░реАрдм рдкрд╣реБрдВрдЪ рдЬрд╛рдПрдЧрд╛ред

рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджреЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ README рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ v3 рдХреЛ рдЬрд▓реНрдж рд╣реА рд╢рд┐рдкрд┐рдВрдЧ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдХреЛрдИ рдирдИ рд╕рдорд╕реНрдпрд╛ рдЖрддреА рд╣реИ рддреЛ рдмреЗрдЭрд┐рдЭрдХ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВред рдзрдиреНрдпрд╡рд╛рдж!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

jlank picture jlank  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sinai-doron picture sinai-doron  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Infinitay picture Infinitay  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kjin picture kjin  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

alditis picture alditis  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ