Winston: рдХреНрдпрд╛ рд╡рд┐рдВрд╕реНрдЯрди рдХреЛ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдлреНрд░рдВрдЯ-рдПрдВрдб (рдпрд╛рдиреА рдмреНрд░рд╛рдЙрдЬрд╝рд░) рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 29 рдЬреБрд▓ре░ 2013  ┬╖  60рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: winstonjs/winston

рдХреНрдпрд╛ рд╡рд┐рдВрд╕реНрдЯрди рдХреЛ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдлреНрд░рдВрдЯ-рдПрдВрдб рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдореИрдВ рдЕрдзрд┐рдХ рдлреНрд░рдВрдЯ-рдПрдВрдб рд▓реЙрдЧрд┐рдВрдЧ рдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрд╕реНрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

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

рдпрд╛рд░, рдЬрдм рдореИрдВрдиреЗ рдкреИрдХреЗрдЬ рджреЗрдЦрд╛ рдФрд░ рдлрд┐рд░ рдХреЛрдИ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рдирд╣реАрдВ рджреЗрдЦрд╛, рддреЛ рдореЗрд░реА рдЙрдореНрдореАрджреЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛ рдЧрдИрдВред
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреБрдЫ рдШрд░реЗрд▓реВ рд╕рд╛рдорд╛рдиреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╣реЛрдЧрд╛ред

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

рдореИрдВрдиреЗ рдЗрд╕рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ https://github.com/farpoint/meteor-winston-client

рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ: https://github.com/flatiron/winston/issues/180

рдЙрд╕ рд▓рд┐рдВрдХ рдкрд░ 404 рд╣реИ @joshacheson !!

рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЖрдкрдХреА рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рд╣реБрдИ рд╣реИ?

#582 рд╕реЗ рдлреАрдбрдмреИрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдХреЗ рдХрд┐рд╕реА рднреА рдкреАрдЖрд░ рдХреЛ brfs рдЬреИрд╕реЗ рд╢рд┐рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХреЛрд░ рд▓реЙрдЬрд┐рдХ рдФрд░ рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдЧрд╛ рдФрд░ рд▓рдЧрднрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╢реИрд▓реА рдФрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рдореВрд▓ рджреЗрд╡реЛрдВ рдХреЗ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЕрдВрддрддрдГ рдЗрд╕реЗ рдмрдирд╛рдП рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╣реЛрдВрдЧреЗред

рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдб рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рд╛рдл рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрд░рдЪрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рд╢реИрд▓реА рдФрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рдореБрдЦреНрдп рджреЗрд╡реЛрдВ рд╕реЗ рдХреБрдЫ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдХреНрдпрд╛ @indexzero / @pose рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдкреНрд░рдЧрддрд┐?

рдпрд╛рд░, рдЬрдм рдореИрдВрдиреЗ рдкреИрдХреЗрдЬ рджреЗрдЦрд╛ рдФрд░ рдлрд┐рд░ рдХреЛрдИ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рдирд╣реАрдВ рджреЗрдЦрд╛, рддреЛ рдореЗрд░реА рдЙрдореНрдореАрджреЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛ рдЧрдИрдВред
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреБрдЫ рдШрд░реЗрд▓реВ рд╕рд╛рдорд╛рдиреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╣реЛрдЧрд╛ред

+1

рд╡рд╣реА рдпрд╛ рдореИрдВред рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд▓реЙрдЧрд┐рдВрдЧ рд▓рд┐рдм рд╣реЛрдиреЗ рд╕реЗ рднреА рдорджрдж рдорд┐рд▓рддреА рд╣реИред

рдореИрдВ рдмрд╕ рдЗрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдпрд╣ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рднрд▓реЗ рд╣реА рдЗрд╕рдореЗрдВ http рдкрд░рд┐рд╡рд╣рди рд╣реЛ, рдмреНрд░рд╛рдЙрдЬрд╝рд░/рдЕрдиреНрдп рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдорд╛рдирдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред

рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдореБрдЭреЗ рдмрдирдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛

рдЗрд╕ рдкрд░ рдХреЛрдИ рднреА рд╕рдорд╛рдЪрд╛рд░?

рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдХрд╕реНрдЯрдо рдкрд░рд┐рд╡рд╣рди рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

const Transport = require('winston-transport');

export default class BrowserConsole extends Transport {
  constructor(opts) {
    super(opts);

    this.name = 'BrowserConsole';
    this.levels = {
        error: 0,
        warn: 1,
        info: 2,
        debug: 4,
    };

    this.methods = {
        error: 'error',
        warn: 'warn',
        info: 'info',
        debug: 'log',
    };

    this.level = opts.level && this.levels.hasOwnProperty(opts.level)
                  ? opts.level : 'info';
  }

  log(method, message) {
    setImmediate(() => {
      this.emit('logged', method);
    });

    const val = this.levels[method];
    const mappedMethod = this.methods[method];

    if (val <= this.levels[this.level]) {
      // eslint-disable-next-line
      console[mappedMethod](message);
    }
  }
}

рдлрд┐рд░ рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

import BrowserConsole from './BrowserConsole';

const { createLogger, transports } = require('winston');

const log = createLogger({
  level: 'info',
});

if (process.env.NODE_ENV !== 'production') {
  log.add(new BrowserConsole({
    level: 'info',
  }));
}

рдЗрд╕ рдкрд░рд┐рд╡рд╣рди рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдПрдХ рдмреЗрдХрд╛рд░ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд▓реАрдЧреЗрд╕реА рдХреЛрдб рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреНрдп рдХрдВрд╕реЛрд▓ рд╡рд┐рдзрд┐рдпреЛрдВ ( table , dir , trace , ...) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рднреА рд╕реБрдВрджрд░ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП рдпрд╣ рдРрд╕рд╛ рд╣реА рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж @chrisvoo , рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рд▓реЗрдХрд┐рди рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА рд╣реИ:

ReferenceError: Buffer is not defined
    replacer 
    json.js/module.exports< 
    _transform 
    _stream_transform.js/Transform.prototype._read
    _stream_transform.js/Transform.prototype._write
    doWrite
    writeOrBuffer
    _stream_writable.js/Writable.prototype.write
    log

@ рджрд┐рдорд┐рддреНрд░реА-рд╕рд╛рд▓рдирд┐рдХреЛрд╡ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛, рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ рдореИрдВ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреЛрдб рд╕реНрдЯреНрд░реАрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╢рд╛рдпрдж рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдерд╛ред рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕реЗ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

@chrisvoo рдореИрдВрдиреЗ BrowserConsole рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рд╣реИ, рдлрд┐рд░ рджреВрд╕рд░реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЛрдб рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдХреЛ рдЪрд┐рдкрдХрд╛рдпрд╛ рд╣реИ, рдФрд░ BrowserConsole рдкрд░рд┐рд╡рд╣рди рдХреЛрдб (рдЖрдкрдХреЗ рд╕реНрдирд┐рдкреЗрдЯ рдХреА рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐) рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВ рдмрд╕ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ:

log.info('hello world');

рддрдм рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА, рдФрд░ рдХреЛрд╢рд┐рд╢ рдХреА:

log.log('info, 'hello world');

рджреЛрдиреЛрдВ рдХреЙрд▓ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред

рдореЗрд░рд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдиреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ Meteor.js v1.6 (рдиреЛрдб 8.8.1) рд╣реИред рд╕рд╛рде рд╣реА рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдХреА рдХрд┐рд╕реА рднреА рдкрдВрдХреНрддрд┐ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рдмреАрдЯреАрдбрдмреНрд▓реВ: рдореИрдВрдиреЗ рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ рд╡рд┐рдВрд╕реНрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@ рджрд┐рдорд┐рддреНрд░реА-рд╕рд╛рд▓рдирд┐рдХреЛрд╡ рдЖрдкрдХреЛ рдХрд┐рд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ? рдЬреИрд╕реЗ "рдЬрд╛рдирдХрд╛рд░реА рдПрдХ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ"? рд╢рд╛рдпрдж рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдпрд╣ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

@chrisvoo рдХреГрдкрдпрд╛ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
screenshot 2017-11-08 20 35 31

BrowserConsole.js (рдЖрдк рдЗрд╕реЗ рдлрд╝рд╛рдЗрд▓ рдЯреНрд░реА рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ) рдХреА рд╕рд╛рдордЧреНрд░реА рдмрд┐рд▓реНрдХреБрд▓ рдЖрдкрдХреЗ рд╕реНрдирд┐рдкреЗрдЯ рдХреА рддрд░рд╣ рд╣реИред

рдФрд░ рдореИрдВ рдЖрдкрд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдпрд╛рдд рдореЗрдВ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддрд╛ рдХрд┐ рдХреНрдпреЛрдВ :( рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдкрд░ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдЖрдкрдХрд╛ рд╡рд┐рдВрд╕реНрдЯрди рд╕рдВрд╕реНрдХрд░рдг рдХреНрдпрд╛ рд╣реИ? рдореЗрд░рд╛ рд╣реИ:

"winston": "^3.0.0-rc1",
"winston-transport": "^3.0.1"

рдЕрд╕рд▓ рдореЗрдВ рд╡рд╣реА

$ npm ls | grep winston
тФЬтФАтФм [email protected]
тФВ тФФтФАтФА [email protected]
тФФтФАтФА [email protected]
$ cat package.json | grep winston
    "winston": "^3.0.0-rc1",
    "winston-transport": "^3.0.1"

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдореИрдВрдиреЗ рдПрдХ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ:

import winston from 'winston';
import BrowserConsole from '/imports/BrowserConsole.js';

const format = winston.format;
// next line throws exception, see below
const { combine, timestamp, label, printf, colorize, prettyPrint } = format;

const logger = winston.createLogger({
...

рдФрд░ рдЕрдЧрд▓реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА: Cannot find module './combine'

рдпрд╣рд╛рдВ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдб (рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ) рд╣реИ:
screenshot 2017-11-10 04 01 04

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред @chrisvoo рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ?

рд╡рд┐рдВрд╕реНрдЯрди 3.0.0 рдореЗрдВ, рдкрд░рд┐рд╡рд╣рди рдзрд╛рд░рд╛рдПрдВ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, browserify-stream рдореЗрдВ, readableStream instanceof Stream рд╕рд╣реА рдирд╣реАрдВ рд╣реИред рдЗрд╕рд╕реЗ рд╡рд┐рдВрд╕реНрдЯрди рдкрд░рд┐рд╡рд╣рди рдХреЛ рд▓рд┐рдЧреЗрд╕реА рд░реИрдкрд░ рдореЗрдВ рд▓рдкреЗрдЯрдиреЗ рдФрд░ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдиреЗ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВрдиреЗ рд╕реНрдЯреНрд░реАрдордиреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рддрд░реАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдмрдирд╛рдпрд╛: #1145

@ рдЬрд╕реБ рд╕рдЪ рдореИрдВрдиреЗ рдЗрд╕реЗ рднреА рджреЗрдЦрд╛, рдореИрдВрдиреЗ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рд╡рд┐рдВрд╕реНрдЯрди-рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдкрд░ рдкрд╣рд▓реЗ рдПрдХ рдореБрджреНрджрд╛ рдЬрдорд╛ рдХрд┐рдпрд╛ рд╣реИред рдХрдВрд╕реЛрд▓ рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдХреЗ рдЖрдЗрд╕реЛрдореЙрд░реНрдлрд┐рдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЬрд▓реНрдж рд╣реА рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рднреА рд╕рдмрдорд┐рдЯ рдХрд░реВрдВрдЧрд╛ред

IGNOREME: рдореИрдВ рдпрд╣рд╛рдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рддрд╛рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдвреВрдВрдв рд╕рдХреВрдВ, [рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрдХреЗрд▓реЗ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рд╕реЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛](https://github.com/isaacs/github/issues/283)ред

рдореИрдВ рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдорд┐рд▓рд╛, Error: Cannot find module './combine' ред

+1

@chrisvoo : рдиреАрдЪреЗ рддреНрд░реБрдЯрд┐ рд╣реИ, рдЬрдм рдореИрдВ рдЖрдкрдХрд╛ рд╕реНрдирд┐рдкреЗрдЯ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ (рд╡рд┐рдВрд╕реНрдЯрди рдФрд░ рд╡рд┐рдВрд╕реНрдЯрди-рдкрд░рд┐рд╡рд╣рди 3+ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рд╣реИрдВ)
рд╡рд┐рдВрд╕реНрдЯрди-рдкрд░рд┐рд╡рд╣рди/index.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: node_modules/winston-transport' рдореЗрдВ 'рд╕реНрдЯреНрд░реАрдо' рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛

рдХреНрдпрд╛ рдЗрд╕ рд╕рд╛рд▓ рдкреАрдЖрд░ #1145 (рдирд╡рдВрдмрд░ 2017 рдореЗрдВ рдЦреЛрд▓рд╛ рдЧрдпрд╛) рдХрд╛ рд╡рд┐рд▓рдп рд╣реЛрдиреЗ рдХреА рдХреЛрдИ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ? :рдЖрдБрдЦ рдорд╛рд░рдирд╛:

@ рджрд┐рдорд┐рддреНрд░реА-рд╕рд╛рд▓рдирд┐рдХреЛрд╡ #1145 рдХреЛ рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рдорд┐рд▓рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрднреА рд░рд┐рд▓реАрдЬ рдореЗрдВ рдирд╣реАрдВ рд╣реИред

рдмрдВрдж рдмрдВрдж рдмрдВрдж.

рдЖрд▓реВ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж

5 рд╕рд╛рд▓, рдХрдо рд╕реЗ рдХрдо рдЗрд╕рдХреЗ рдлрд▓рдиреЗ-рдлреВрд▓рдиреЗред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдИрдПрдордУ рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрд╕реНрдЯрди рдЕрднреА рднреА рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд▓реЙрдЧрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╣реИ

рдзрдиреНрдпрд╡рд╛рдж!

рдпрд╣ рддрдм рддрдХ рдЦреБрд▓рд╛ рд░рд╣реЗрдЧрд╛ рдЬрдм рддрдХ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдореЗрдВ рдРрд╕реЗ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмреЗрдмреЗрд▓ рдФрд░ рд╡реЗрдмрдкреИрдХ рдХреЗ рдХрд┐рдирд╛рд░реЗ рдФрд░ рдХреЛрдиреЗ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╣рд▓ рдХрд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдпрд╣рд╛рдВ рд╣рдо рд╡рд┐рдВрд╕реНрдЯрди рд╕реЗ рдкреНрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рд▓реЙрдЧрд┐рдВрдЧ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд▓рд╛рдЧреВ рд╣реБрдП рдХреБрдЫ рд╕рдордп рдмреАрдд рдЪреБрдХрд╛ рд╣реИ рдФрд░ рд╣рдо рдЕрднреА рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдкреВрд░реНрдг рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╡рд░реЗрдЬ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рдХрд╛ рдХреЛрдИ рдореЛрдЯрд╛ рд╡рд┐рдЪрд╛рд░?

рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╡рд┐рдВрд╕реНрдЯрди рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдФрд░ рдирд┐рдореНрди рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд░рд╣рд╛:
./\~/winston/lib/winston/tail-file.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: 'fs' рдХреЛ '/Users/me/workspaces/app/node_modules/winston/lib/winston' рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
@ ./\~/winston/lib/winston/tail-file.js 10:11-24
@ ./\~/winston/lib/winston/transports/file.js
@ ./\~/winston/lib/winston/transports/index.js
@ ./\~/winston/lib/winston.js
@ ./src/app/app.module.ts
@ ./src/main.ts

рд╡рд┐рдВрд╕реНрдЯрди рдХрд╛ index.js рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ '.file' рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП 'fs' рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдореИрдВ рдЗрд╕ рдирдП рдирд░рдХ рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рдХреИрд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░реВрдВ

  • рдорд╛рдЗрдХрд▓

рдордВрдЧрд▓рд╡рд╛рд░, 7 рдЕрдЧрд╕реНрдд, 2018 рдХреЛ рджреЛрдкрд╣рд░ 2:19 рдмрдЬреЗ Kfir Erez [email protected] рдиреЗ рд▓рд┐рдЦрд╛:

рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрд╕реНрдЯрди рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд░рд╣рд╛
рд╕рдВрджреЗрд╢:
.//winston/lib/winston/tail-file.js . рдореЗрдВ рддреНрд░реБрдЯрд┐
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛: рддреНрд░реБрдЯрд┐: 'fs' рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
'/ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛/рдореИрдВ/рдХрд╛рд░реНрдпрд╕реНрдерд╛рди/рдРрдк/рдиреЛрдб_рдореЙрдбреНрдпреВрд▓/рд╡рд┐рдВрд╕реНрдЯрди/рд▓рд┐рдм/рд╡рд┐рдВрд╕реНрдЯрди'
@ .//winston/lib/winston/tail-file.js 10:11-24
@ .//winston/lib/winston/transports/file.js
@ .//winston/lib/winston/transports/index.js
@ ./~/winston/lib/winston.js
@ ./src/app/app.module.ts
@ ./src/main.ts

рд╡рд┐рдВрд╕реНрдЯрди рдХрд╛ index.js рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ '.file' рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
'рдПрдлрдПрд╕'ред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/winstonjs/winston/issues/287#issuecomment-410946148 ,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AE3lcdZ3aQKEVYvYB2TXjh0dnQ1FaBS2ks5uOTFhgaJpZM4A2vjK
.

@mjcd рдЖрдк рдпрд╣рд╛рдВ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдлрдВрд╕ рдЧрдП рд╣реИрдВ ЁЯШЖ (j/k, рдЖрдк рдИрдореЗрд▓ рдкрд░ рдпрд╛ gh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)

рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рд╣реИ рдЬреЛ @KErez рдиреЗ рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛

рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХрд╛ рд╣реИ node: { fs: 'empty' } рдХреЛ рдЕрдкрдиреЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдореЗрдВ - рдФрд░ рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ File рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рди рдХрд░реЗрдВ, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдЙрд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рд╡реЗрдмрдкреИрдХ рдореЗрдВ рд╡рд┐рдВрд╕реНрдЯрди рдмрдВрдбрд▓ рдмрдирд╛ рд╕рдХреЗрдВ рд▓реЗрдХрд┐рди рдпрджрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдЖрдИрдбреАрдХреЗред рдЕрдиреНрдп рд▓реЛрдХрдкреНрд░рд┐рдп рдкреИрдХреЗрдЬ рднреА рдпрд╣реА рдмрд╛рдд рд╕реБрдЭрд╛рддреЗ рд╣реИрдВ - рд╣рд╛рд▓рд╛рдВрдХрд┐ https://github.com/pugjs/pug-loader/issues/8#issuecomment -328331541 рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рд╡рд┐рдВрд╕реНрдЯрди рдХреЗ package.json рдореЗрдВ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреЛрдИ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ рдкреАрдЖрд░ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдЕрдЧрд░ рдпрд╣ рдЙрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ (рдпрд╛рдиреА рдЖрдкрдХреЗ рдРрдк рдХреА рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛, рдмрд╕ рд╡рд┐рдВрд╕реНрдЯрди рдХреЗ рдкреИрдХреЗрдЬ рдХреЛ рдмрджрд▓ рд░рд╣рд╛ рд╣реИред рдЬреЗрд╕рди)?

рдореБрдЭреЗ рдореБрдЭреЗ рд╕реЗрдЯ рдХреЗ рдХрд╛рд░рдг рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ ... рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдХреНрдпреЛрдВ @chrisvoo рдХреЗ рд╕рд╛рде рд╕рдлрд▓ рд╣реЛ рд░рд╣рд╛ рд╣реИред рд╢рд╛рдпрдж рдЗрд╕рд▓рд┐рдП рдХрд┐ рдЖрдк рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?

рдореЗрд░рд╛ рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджрд╛: https://github.com/winstonjs/winston/issues/1489

рдпрд╣рд╛рдВ @chrisvoo рдХреЛрдб (thx рд╕реЛ рдордЪ) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдкреИрдХреЗрдЬ рдмрдирд╛рдпрд╛:
https://www.npmjs.com/package/winston-transport-browserconsoleред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд╣рд╛рдБ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдирдореВрдирд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдВрд╕реНрдЯрди рдХрдВрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХрд╛ рд╣реИ рдиреЛрдб: {fs: 'рдЦрд╛рд▓реА' } рдЖрдкрдХреЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд┐рдЧрд░ рдореЗрдВ

рдХреНрдпрд╛ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рд╡реЗрдмрдкреИрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмрдВрдбрд▓реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рд╣реИ?

рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдЙрд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рд╡реЗрдмрдкреИрдХ рдореЗрдВ рд╡рд┐рдВрд╕реНрдЯрди рдмрдВрдбрд▓ рдмрдирд╛ рд╕рдХреЗрдВ рд▓реЗрдХрд┐рди рдпрджрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдЖрдИрдбреАрдХреЗред рдЕрдиреНрдп рд▓реЛрдХрдкреНрд░рд┐рдп рдкреИрдХреЗрдЬ рднреА рдпрд╣реА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ -- рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкрдЧрдЬ/рдкрдЧ-рд▓реЛрдбрд░#8 (рдЯрд┐рдкреНрдкрдгреА) рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рд╡рд┐рдВрд╕реНрдЯрди рдХреЗ рдкреИрдХреЗрдЬ.рдЬреЗрд╕рди рдореЗрдВ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреЛрдИ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ рдкреАрдЖрд░ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдЕрдЧрд░ рдпрд╣ рдЙрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ (рдпрд╛рдиреА рдЖрдкрдХреЗ рдРрдк рдХреА рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛, рдмрд╕ рд╡рд┐рдВрд╕реНрдЯрди рдХреЗ рдкреИрдХреЗрдЬ рдХреЛ рдмрджрд▓ рд░рд╣рд╛ рд╣реИред рдЬреЗрд╕рди)?

@DABH рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЗрддрдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЖрдк рд▓реЛрдЧ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╛ рддреЛ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдХреБрдЫ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЙрд╕ рдЯрд┐рдХрдЯ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ - рджреЛрдиреЛрдВ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рд╢рд╛рдпрдж рдЗрд╕реЗ рдЙрд╕рд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдЧрд░ рдореБрдЭреЗ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рдореМрдХрд╛ рдорд┐рд▓рд╛ рддреЛ рдореИрдВ рдЪреЛрдЯреА рд▓реВрдВрдЧрд╛ред

рдЗрд╕ рдкрд░ рдХреЛрдИ рдкреНрд░рдЧрддрд┐? 6 рд╕рд╛рд▓ рд╣реЛ рдЧрдП рд╣реИрдВ рдФрд░ рдХрд▓ 2020 рд╣реЛрдЧрд╛ :-)

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╛рдзрд╛рди рд╡рд┐рдВрд╕реНрдЯрди рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреИрдХреЗрдЬ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯрд░ рд╡реЗ рд╕реНрд╡рдпрдВ рдХреЗ рдореЙрдбреНрдпреВрд▓ рд╣реЛрдВред рдПрдХ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ

рдХреНрдпрд╛ рд╣рдо рд╡рд┐рдВрд╕реНрдЯрди рдХреЛ рдХреЛрдгреАрдп рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдХреИрд╕реЗ ?

@ArpithaGMGowda рдорд╛рдирдХ рдХреЛрдгреАрдп рд╕реАрдПрд▓рдЖрдИ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ

рдлрд┐рд░ рд╣рдо рдХреЛрдгреАрдп 7 рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ??
рдХреЛрдИ рдЙрдкрд╛рдп

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЖрдЦрд┐рд░реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЗрдПрд╕-рд▓реЙрдЧрд░ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛ рдФрд░ рдореБрдЭреЗ рдПрд▓реНрдХ рдХреЛ рд▓реЙрдЧ рднреЗрдЬрдиреЗ рдХреА рдЗрдЬрд╛рдЬрдд рджреЗрддрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ рдореЗрдВ рдЗрд╕рдХреА рдЬреНрдпрд╛рджрд╛ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реБрдИ рдереА: https://github.com/jonnyreeves/js-logger
рдЕрдЪреНрдЫреА рд▓реЙрдЧрд┐рдВрдЧ рд╕реЗрд╡рд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ track.js

рдореИрдВ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдПрдХ рдирдИ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдиреЛрдб рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЗрд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рдЦрддреНрдо рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП

рд╡рд┐рдВрд╕реНрдЯрди рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛрдб рдЖрдзрд╛рд░рд┐рдд рдореВрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдЖрдзреБрдирд┐рдХреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдкрд░рд┐рд╡рд╣рди рдкрд░рдд рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдмрдореЙрд▓реНрдбреНрд╕ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдЧреА, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯреАрдо рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдмрдирдирд╛ рдЪрд╛рд╣рддреА рд╣реИред рдЗрд╕ рдмрд┐рдВрджреБ рддрдХ рдЬрдм рддрдХ рдХрд┐ рдЯреАрдо рдПрдХ рдирдпрд╛ рдЗрдХреЛ рд╕рд┐рд╕реНрдЯрдо рдЕрдкрдирд╛рдиреЗ рдХреЛ рддреИрдпрд╛рд░ рди рд╣реЛред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рдкреАрдЖрд░ рдХреА рдорд░рдореНрдордд рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ рдЙрд╕реЗ рдордВрдЬреВрд░реА рджреА рдЬрд╛рдПрдЧреАред

рдХреНрдпрд╛ рдЖрдк рд▓реЛрдЧреЛрдВ рдиреЗ NGX-Logger " https://www.npmjs.com/package/ngx-logger " рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ?

@ArpithaGMGowda рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП, рдореБрдЭреЗ рдПрдХ рдХреЛрдб рдЖрдзрд╛рд░ рд▓рд┐рдЦрдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдврд╛рдВрдЪреЗ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпреВрдЖрдИ рд╕реЗ рд╕рд░реНрд╡рд┐рд╕ рдХреЙрд▓ рддрдХ рдХреЛрдб рдпрдерд╛рд╕рдВрднрд╡ рдЕрдЬреНрдЮреЗрдпрд╡рд╛рджреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдПрдХ рдПрдХреАрдХреГрдд рддрдВрддреНрд░ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рднреА рдкрд╕рдВрдж рд╣реИред рдмреИрдХрдПрдВрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд╛рд╕реНрддрд╛ рдФрд░ рдлреНрд░рдВрдЯрдПрдВрдб рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ рд░рд╛рд╕реНрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?

рдореИрдВ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдПрдХ рдирдИ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдиреЛрдб рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЗрд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рдЦрддреНрдо рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП

@ рдЬреЙрд░реНрдбрди-рд╣реЙрд▓ рд╡рдВрдбрд░ рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬрд▓реНрдж рд╣реА рдЖрд░рд╕реА рд╣реЛ (рдФрд░ рдзрдиреНрдпрд╡рд╛рдж)ред
рд╡рд┐рдВрд╕реНрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ/lib рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рд╡реЗрдмрдкреИрдХ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдШрд░реНрд╖ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред

@MarcoMedrano рдпрд╣ рдПрдХ рдореМрд▓рд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ рдЬреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдПрдХ рдирдпрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рдордп рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред

@pose рдХреЛрд░ рдкреИрдХреЗрдЬ рд╕реЗ рдкрд░рд┐рд╡рд╣рди рдкрд░рддреЛрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдкрд░ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ? рдореБрдЭреЗ рд╡рд┐рдВрд╕реНрдЯрди рдкрд╕рдВрдж рд╣реИ рд▓реЗрдХрд┐рди рдЗрдХреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ

рдЗрд╕реЗ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рдордп рд▓рдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХрд╛ рдХреБрдЫ рд╣рдж рддрдХ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рд▓реЗрдХрд░ рдЖрдпрд╛ рд╣реВрдВред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдкрдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рддреНрд░реБрдЯрд┐, рдЪреЗрддрд╛рд╡рдиреА рдФрд░ рд╕реВрдЪрдирд╛ рд╕реНрддрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ ( рдХрд╕реНрдЯрдо рдЙрдкрд╕рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде!), рдФрд░ рд╡реЗ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ:
gHLo47GZ0bvMAsiqhxRfSV3TIWyXn9NO

рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ winston , logform рдФрд░ winston-transport рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рд╡рд╣ рдХреЛрдб рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрджрд╛рд╣рд░рдг рдиреАрдЪреЗ рд╣реИред

import * as winston from 'winston';
import {TransformableInfo} from 'logform';
import TransportStream = require('winston-transport');

// enumeration to assign color values to
enum LevelColors {
  INFO = 'darkturquoise',
  WARN = 'khaki',
  ERROR = 'tomato',
}

// type levels used for setting color and shutting typescript up
type Levels = 'INFO' | 'WARN' | 'ERROR';

const defaultColor = 'color: inherit';

//! Overriding winston console transporter
class Console extends TransportStream {
  constructor(options = {}) {
    super(options);

    this.setMaxListeners(30);
  }

  log(info: TransformableInfo, next: () => void) {
    // styles a console log statement accordingly to the log level
    // log level colors are taken from levelcolors enum
    console.log(
      `%c[%c${info.level.toUpperCase()}%c]:`,
      defaultColor,
      `color: ${LevelColors[info.level.toUpperCase() as Levels]};`,
      defaultColor,
      // message will be included after stylings
      // through this objects and arrays will be expandable
      info.message
    );

    // must call the next function here
    // or otherwise you'll only be able to send one message
    next();
  }
}

// creating silent loggers with according levels
// silent by default to be automatically deactivated
// in production mode
export const logger = winston.createLogger({
  transports: [
    new Console({
      silent: true,
      level: 'info',
    }),
  ],
});

// don't log anything in production mode
// probably should go further and return non
// working logger function to reduce
// execution time and improve speed results
// on application
if (process.env.NODE_ENV !== 'production') {
  logger.transports.forEach(transport => (transport.silent = false));
}

рдФрд░ рдпрд╣рд╛рдБ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

import * as winston from 'winston';

import {TransformableInfo} from 'logform';
import TransportStream = require('winston-transport');

// enumeration to assign color values to
const LevelColors = {
  INFO: 'darkturquoise',
  WARN: 'khaki',
  ERROR: 'tomato',
}

const defaultColor = 'color: inherit';

//! Overriding winston console transporter
class Console extends TransportStream {
  constructor(options = {}) {
    super(options);

    this.setMaxListeners(30);
  }

  log(info, next) {
    // styles a console log statement accordingly to the log level
    // log level colors are taken from levelcolors enum
    console.log(
      `%c[%c${info.level.toUpperCase()}%c]:`,
      defaultColor,
      `color: ${LevelColors[info.level.toUpperCase()]};`,
      defaultColor,
      // message will be included after stylings
      // through this objects and arrays will be expandable
      info.message
    );

    // must call the next function here
    // or otherwise you'll only be able to send one message
    next();
  }
}

// creating silent loggers with according levels
// silent by default to be automatically deactivated
// in production mode
export const logger = winston.createLogger({
  transports: [
    new Console({
      silent: true,
      level: 'info',
    }),
  ],
});

// don't log anything in production mode
// probably should go further and return non
// working logger function to reduce
// execution time and improve speed results
// on application
if (process.env.NODE_ENV !== 'production') {
  logger.transports.forEach(transport => (transport.silent = false));
}

рдЖрдк LevelColors enum рдореЗрдВ рд░рдВрдЧ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рд╕реНрд╡рд░реВрдкрдг рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдкрдВрдХреНрддрд┐ 29 рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред

рдбрд┐рдмрдЧ рд╕реНрддрд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдПред рдХрдВрд╕реЛрд▓ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ level рдХреЛ 'debug' рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред
рд╕рднреА рдорд╛рдирдХ рд╡рд┐рдВрд╕реНрдЯрди рд╕реНрддрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ: рдЙрднрд░рдирд╛, рдЪреЗрддрд╛рд╡рдиреА, рдЖрд▓реЛрдЪрдирд╛, рддреНрд░реБрдЯрд┐, рдЪреЗрддрд╛рд╡рдиреА, рдЬрд╛рдирдХрд╛рд░реА рдФрд░ рдбреАрдмрдЧред рдпрджрд┐ рдЖрдк рдЗрдирдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ createLogger рд░реВрдЯ рдореЗрдВ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ levels рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛

{
   emerg: 0,
   alert: 1,
   crit: 2,
   error: 3,
   warn: 4,
   info: 5,
   debug: 6,
}

рдФрд░ рдлрд┐рд░ LevelColors enum рдореЗрдВ рд░рдВрдЧ рдорд╛рди рдЬреЛрдбрд╝реЗрдВред

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рд╕реНрдкрд╖реНрдЯ рддрд╕реНрд╡реАрд░ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдХреНрдпрд╛ рдореИрдВ рдЕрдкрдиреЗ рд░рд┐рдПрдХреНрдЯ рдРрдк рдореЗрдВ рд╡рд┐рдВрд╕реНрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдореЗрдВ рдЗрддрдиреА рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд╣реИ - рдФрд░ рдХрд╛рдлреА рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореБрдЭреЗ winston console transporter рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдмрд╛рдд рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддреА рд╣реИ рдЬрдм рдмрд┐рд▓реНрдЯ-рдЗрди console рдПрдХ рд╣реА рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ ; рд╢рд╛рдпрдж рдХреЛрдИ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдкреНрд░рдмреБрджреНрдз рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдореЗрд░реА рд╕реНрдерд┐рддрд┐ рдпрд╣ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рд░рд┐рдПрдХреНрдЯ рдРрдк рдПрдХ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдХ nginx / Let's Encrypt рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдкреАрдЫреЗ рдЪрд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдХрд┐рд╕реА рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ; рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХрд┐рд╕реА рднреА рд▓реЙрдЧ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдПрдХ syslog рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

рдореИрдВрдиреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдПрдХ syslog-ng рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕, рдмреИрдХрдПрдВрдб рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдХрдВрдЯреЗрдирд░реЛрдВ рд╕реЗ рд▓реЙрдЧ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕рдореЗрдХрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдмрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рд┐рд╕рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ-рдЖрдЧреЗ/рд╡рд┐рд╣рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ рд░рд┐рдПрдХреНрдЯ рдлреНрд░рдВрдЯрдПрдВрдб рд╕реЗ рдЖрдЙрдЯрдкреБрдЯред

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдХреБрдЫ рдЧреВрдВрдЧрд╛ рдШрд░-рдирд┐рд░реНрдорд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реИрдХ рдХрд░реВрдБ, рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдореЗрд░реЗ рд▓рд┐рдП рдХреБрдЫ рдмреЗрд╣рддрд░ рд╕рд▓рд╛рд╣ рд╣реИ?
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рд▓реЗрдВ рдФрд░ console.log рдХреЛ рдХреБрдЫ рдХреЛрдб рд╕реЗ рдмрджрд▓реЗрдВ рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕рдВрджреЗрд╢ рдХреЛ syslog рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрддрд╛ рд╣реИ?

@ z00m1n рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЕрдкрдиреЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рд▓реЙрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╡рд┐рдВрд╕реНрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдФрд░ рдЕрдЧрд░ рдореИрдВ рдЙрддреНрдкрд╛рджрди рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ рд╣реВрдВ рддреЛ рдореИрдВ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдХреЗрд╡рд▓ рдкреНрд░рд┐рдВрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рддрдХ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реВрдВред

рдФрд░ рдореЗрд░реЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ рдХреБрдЫ рдФрд░ рдХреЗ рд╕рд╛рде рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдЗрд╕ рдХрд╛рдо рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдХреА рд╕рдорд╛рдзрд╛рди рд▓рд┐рдЦреЗрдВ, рдореИрдВ рд╕рдВрддрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджреВрдВрдЧрд╛ред

рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рднреА рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рд╡реЗрдмрдкреИрдХ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЕрдлрд╕реЛрд╕ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдпрд╣ рдЕрджреНрднреБрдд рдкреИрдХреЗрдЬ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдирд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рд▓ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ

@ рдХрд┐рдореЗрдиреЛ рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХреЛрдИ рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рдпрд╛ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдореБрджреНрджреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рд╣реИ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЙрдмреЗрд░-рд╕реНрдерд┐рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдХреБрдЫ рд▓реЙрдЧрд┐рдВрдЧ рд╣реЛрдЧреА ...

@gcperrin рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдХреБрдЫ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
рджреЗрд╡ рдкрд░реНрдпрд╛рд╡рд░рдг: рдпрд╣ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХреБрдЫ рд▓реЙрдЧ рдХрд░рддрд╛ рд╣реИ
рдЙрддреНрдкрд╛рдж рдкрд░реНрдпрд╛рд╡рд░рдг: рдпрд╣ рдХреБрдЫ рд▓реЙрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд▓реЙрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ

_console.info (рджреЗрд╡ рдкрд░реНрдпрд╛рд╡рд░рдг)_; 10.000 рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП 1.863sред (0,1893ms рдкреНрд░рддреНрдпреЗрдХ)
_logger.info (рджреЗрд╡ рдкрд░реНрдпрд╛рд╡рд░рдг)_: 10.000 рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП 7.980sред (0.7980ms рдкреНрд░рддреНрдпреЗрдХ)

_logger.info (рдЙрддреНрдкрд╛рдж рдкрд░реНрдпрд╛рд╡рд░рдг)_; 10.000 рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП 3.731sред (0.3731ms рдкреНрд░рддреНрдпреЗрдХ)

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд▓реЙрдЧрд░реНрд╕ рдХреЛ рдЪреБрдк рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рднреА рдЖрдкрдХреЗ рдкрд╛рд╕ 0.3731ms (рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдФрд░ рднреА рдЕрдзрд┐рдХ) рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛрдб рдЪрд▓ рд░рд╣рд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреБрдЫ рд╕реМ рд▓реЙрдЧ рд╣реИрдВ рдЬреЛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЪреБрдк рд╣реИрдВ, рддреЛ рдЗрд╕рд╕реЗ рдЖрдкрдХрд╛ рд╡реЗрдмрдПрдк рдкрд┐рдЫрдбрд╝ рд╕рдХрддрд╛ рд╣реИред

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрдХреНрд╖ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд▓реЙрдЧ рдЗрди рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрд╕реНрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛?

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдФрд░ рдореИрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рд▓реЙрдЧ рдХреЛ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдХреГрдкрдпрд╛ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рд╕реБрдЭрд╛рдПрдВред

рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рджред

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

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

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

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

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

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

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