рдХреНрдпрд╛ рд╡рд┐рдВрд╕реНрдЯрди рдХреЛ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдлреНрд░рдВрдЯ-рдПрдВрдб рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдореИрдВ рдЕрдзрд┐рдХ рдлреНрд░рдВрдЯ-рдПрдВрдб рд▓реЙрдЧрд┐рдВрдЧ рдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрд╕реНрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
рдореИрдВрдиреЗ рдЗрд╕рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ 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 рдХреГрдкрдпрд╛ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
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'
рдпрд╣рд╛рдВ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдб (рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ) рд╣реИ:
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред @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 рдХреЛрд░ рдкреИрдХреЗрдЬ рд╕реЗ рдкрд░рд┐рд╡рд╣рди рдкрд░рддреЛрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдкрд░ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ? рдореБрдЭреЗ рд╡рд┐рдВрд╕реНрдЯрди рдкрд╕рдВрдж рд╣реИ рд▓реЗрдХрд┐рди рдЗрдХреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ
рдЗрд╕реЗ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рдордп рд▓рдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХрд╛ рдХреБрдЫ рд╣рдж рддрдХ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рд▓реЗрдХрд░ рдЖрдпрд╛ рд╣реВрдВред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдкрдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рддреНрд░реБрдЯрд┐, рдЪреЗрддрд╛рд╡рдиреА рдФрд░ рд╕реВрдЪрдирд╛ рд╕реНрддрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ ( рдХрд╕реНрдЯрдо рдЙрдкрд╕рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде!), рдФрд░ рд╡реЗ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ:
рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ 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 (рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдФрд░ рднреА рдЕрдзрд┐рдХ) рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛрдб рдЪрд▓ рд░рд╣рд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреБрдЫ рд╕реМ рд▓реЙрдЧ рд╣реИрдВ рдЬреЛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЪреБрдк рд╣реИрдВ, рддреЛ рдЗрд╕рд╕реЗ рдЖрдкрдХрд╛ рд╡реЗрдмрдПрдк рдкрд┐рдЫрдбрд╝ рд╕рдХрддрд╛ рд╣реИред
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрдХреНрд╖ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд▓реЙрдЧ рдЗрди рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрд╕реНрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛?
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдФрд░ рдореИрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рд▓реЙрдЧ рдХреЛ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдХреГрдкрдпрд╛ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рд╕реБрдЭрд╛рдПрдВред
рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рджред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдпрд╛рд░, рдЬрдм рдореИрдВрдиреЗ рдкреИрдХреЗрдЬ рджреЗрдЦрд╛ рдФрд░ рдлрд┐рд░ рдХреЛрдИ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рдирд╣реАрдВ рджреЗрдЦрд╛, рддреЛ рдореЗрд░реА рдЙрдореНрдореАрджреЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛ рдЧрдИрдВред
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреБрдЫ рдШрд░реЗрд▓реВ рд╕рд╛рдорд╛рдиреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╣реЛрдЧрд╛ред