рдореИрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рд▓реЙрдЧ рд╕реНрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдБред рдореИрдВрдиреЗ рдиреЛрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ, рдПрдирдкреАрдПрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдВрд╕реНрдЯрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рд╡рд┐рдВрд╕реНрдЯрди рд░реЗрдкреЛ рдХреЛ рдХреНрд▓реЛрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИред рдХрд╕реНрдЯрдо рд╕реНрддрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд░реАрдбрдореА рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдмрд┐рдирд╛ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЗ рдЪрд▓рддрд╛ рд╣реИ:
var myCustomLevels = {
levels: {
foo: 0,
bar: 1,
baz: 2,
foobar: 3
},
colors: {
foo: 'blue',
bar: 'green',
baz: 'yellow',
foobar: 'red'
}
};
var customLevelLogger = new (winston.Logger)({ levels: myCustomLevels.levels });
customLevelLogger.foobar('some foobar level-ed message');
рд▓реЗрдХрд┐рди рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХреБрдЫ рднреА рдкреНрд░рд┐рдВрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдХреА рднрд┐рдиреНрдирддрд╛ рдХреА рднреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ
var logger = new (winston.Logger)({
transports: [
new (winston.transports.Console)(),
new (winston.transports.File)({ filename: 'somefile.log' })
]
});
logger.addLevels() рдХреЗ рд╕рд╛рде рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд╣реА рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддреЗ рд╣реИрдВред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдирдП рд▓реЙрдЧ рд╕реНрддрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдореВрд▓ (рдЬрд╛рдирдХрд╛рд░реА, рдбрд┐рдмрдЧ, рдЖрджрд┐) рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ - рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛ред
рдЖрдкрдХреЛ levels
рдФрд░ transports
рджреЛрдиреЛрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ:
var myCustomLevels = {
levels: {
foo: 0,
bar: 1,
baz: 2,
foobar: 3
},
colors: {
foo: 'blue',
bar: 'green',
baz: 'yellow',
foobar: 'red'
}
};
var customLevelLogger = new (winston.Logger)({
level: 'foo',
levels: myCustomLevels.levels,
transports: [new winston.transports.Console()]
});
customLevelLogger.foobar('some foobar level-ed message');
рдЕрд░реЗ рдЗрдВрдбреЗрдХреНрд╕рдЬреЗрд░реЛ, рдореИрдВ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдХреЗ рдереЛрдбрд╝реЗ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВ:
var winston = require('winston')
var myCustomLevels = {
levels: {
foo: 0,
bar: 1,
baz: 2,
foobar: 3
}
};
var customLevelLogger = new (winston.Logger)({
levels: myCustomLevels.levels,
transports: [new winston.transports.Console()]
});
customLevelLogger.foobar('some foobar level-ed message');
рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рдкрд╛рдпрд╛ред рдпрд╣ рдХрдВрд╕реЛрд▓ рдкрд░ рдХреБрдЫ рднреА рдкреНрд░рд┐рдВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:
ruby-1.9.2-p290:winston-test: node server.js
ruby-1.9.2-p290:winston-test:
рдпрджрд┐ рдореИрдВ рдЬрд╛рдирдХрд╛рд░реА рдФрд░ рдбреАрдмрдЧ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рджреЛ рд╕реНрддрд░реЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗрдЧрд╛:
var myCustomLevels = {
levels: {
info: 0,
debug: 1,
baz: 2,
foobar: 3
}
};
var customLevelLogger = new (winston.Logger)({
levels: myCustomLevels.levels,
transports: [new winston.transports.Console()]
});
customLevelLogger.foobar('some foobar level-ed message');
рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛:
ruby-1.9.2-p290:winston-test: node server.js
foobar: some foobar level-ed message
ruby-1.9.2-p290:winston-test:
>.<
@JCBarry рдореЗрд░рд╛ рдХреЛрдб рдирдореВрдирд╛ рдзреНрдпрд╛рди рд╕реЗ рдкрдврд╝реЗрдВред рдЖрдк level
рд╕рдВрдкрддреНрддрд┐ рдХреЛ winston.Logger
рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
var customLevelLogger = new (winston.Logger)({
level: 'foo', // You are not passing a level parameter, so it is defaulting to `info` which doesnt exist.
levels: myCustomLevels.levels,
transports: [new winston.transports.Console()]
});
customLevelLogger.foobar('some foobar level-ed message');
рдЖрдкрдХрд╛ рд╕рдЯреАрдХ рдХреЛрдб рдирдореВрдирд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдФрд░ рдиреЛрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЪрд┐рдкрдХрд╛рдпрд╛ рдЧрдпрд╛ рдЯрд░реНрдорд┐рдирд▓ рдкрд░ рдХреБрдЫ рднреА рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рдЪреВрдВрдХрд┐ рдЖрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд┐рд╕ рд╕реНрддрд░ рдХрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ ("foobar"), рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрддрд░ рдХреА рдкрд░рд╡рд╛рд╣ рдХреНрдпреЛрдВ рдХрд░реЗрдЧрд╛?
рдореИрдВрдиреЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рджреЛрдиреЛрдВ рдХреЛрдб рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рднреА рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХрдВрд╕реЛрд▓ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдЬрдм рддрдХ рдЖрдк рдХрд╕реНрдЯрдо рд╕реНрддрд░реЛрдВ рдореЗрдВ "рдбреАрдмрдЧ" рдФрд░ "рдЬрд╛рдирдХрд╛рд░реА" рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддрдм рддрдХ рдЪреАрдЬреЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреАред
рдпрд╣рд╛рдВ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдФрд░ рдЙрди 2 рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдореЗрд░рд╛ рдПрдХ рд╡реАрдбрд┐рдпреЛ рд╣реИред
http://screencast.com/t/CxWAleAueeRW
рд╕рд╛рде рд╣реА, level:'foo',
рдирд┐рдХрд╛рд▓рдиреЗ рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рд╛ред
рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рдЦреЛрджрдиреЗ рдФрд░ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдФрд░ рдЗрд╕ рдереНрд░реЗрдб рдореЗрдВ рдореИрдВрдиреЗ рджреЗрдЦреЗ рдЧрдП рд╕рднреА рдХреЛрдб рдирдореВрдиреЗ рд╕реЗ, рдЕрдкреЗрдХреНрд╖рд╛ рдпрд╣ рд╣реИ рдХрд┐ рд▓реЙрдЧрд░ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрддрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдХрд╕реНрдЯрдо рд╕реНрддрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХрдорд╛рддреНрд░ рдЖрд╡рд╢реНрдпрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИред
рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЙрдЧрд░ рд╕реНрддрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд░рд┐рд╡рд╣рди рд╕реНрддрд░ рднреА рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ, рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдирд┐рдореНрди рдореЗрдВ рдмрджрд▓рдирд╛:
transports: [new winston.transports.Console({level: foobar})]
рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ lib/winston/logger.js рдореЗрдВ рдЗрд╕ рд╕рд╢рд░реНрдд рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рд╣реИ:
if ((transport.level && self.levels[transport.level] <= self.levels[level])
|| (!transport.level && self.levels[self.level] <= self.levels[level]))
рдЪреВрдВрдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ Transport.level lib/winston/transports/transport.js рдореЗрдВ info
рд╕реЗрдЯ рд╣реИ:
this.level = options.level || 'info';
рд▓рдХрдбрд╝рд╣рд╛рд░реЗ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрддрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдХрд╕реНрдЯрдо рд╕реНрддрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
info
рд╕реНрддрд░ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВрдпрджрд┐ рдпрд╣ рдбрд┐рдЬрд╝рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╕рд╢рд░реНрдд рдФрд░ рдордЬрдмреВрд░ рдЪрд░ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЛ рдмрджрд▓рдХрд░ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣реЛрддрд╛ рд╣реИ, рдкреНрд░рд▓реЗрдЦрди рдереЛрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рднреНрд░рдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рднреАред
рдореБрдЭреЗ рдпрд╛ рддреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА, рдмрд╕ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдЖрдк рдХрд┐рд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдзрдиреНрдпрд╡рд╛рдж!
рдЕрд░реЗ рд╕реВрдЪрдХрд╛рдВрдХ,
рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
рдзрдиреНрдпрд╡рд╛рдж!
рдзрдиреНрдпрд╡рд╛рдж рдЬреЗрд╕реАрдмреАрд░реА, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ({рд╕реНрддрд░: "foobar"})ред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдВрд╕реНрдЯрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдПрдХ рдХрд╛рд▓реА рдХрд▓рд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд▓реЗрдЦрдХ рди рд╣реЛрдВред
рдЕрдЧрд░ рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдХрд╛рдо рдХрд╛ рд╣реИ, рддреЛ рдпрд╣рд╛рдВ 2 рд▓реЙрдЧрд░реНрд╕, рдХрд╕реНрдЯрдо рд▓реЗрд╡рд▓ рдФрд░ рдХрдВрд╕реЛрд▓ рдХрд▓рд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ: https://gist.github.com/2570757
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
var logger = new (Winston.Logger)({
levels: {trace: 0, notice: 1, warning: 2, error: 3},
transports: [
new Winston.transports.Console({
level: "trace",
colorize: true
})
],
colors: {trace: "white", notice: "cyan", warning: "yellow", error: "red"}
});
+1 @ рдЧрд░реНрде
рдзрдиреНрдпрд╡рд╛рдж @ рдЧрд░реНрде
рд╣рд╛рдп, рдореБрдЭреЗ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереАред рдореИрдВрдиреЗ рдЗрд╕реЗ "рдЬрд╛рдирдХрд╛рд░реА: 0" рд╕реЗ рд╢реБрд░реВ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛
levels : {
info : 0,
emerg : 1,
alert : 2,
crit : 3,
err : 4,
warn : 5,
notice : 6,
debug : 7
}
рдЕрдЬреАрдм, рдореБрдЭреЗ рдХреНрдпрд╛ рдорд┐рд▓рд╛:
рдореЗрд░реЗ рд╕реНрддрд░ рдереЗ (рдореИрдВрдиреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рд┐рд╕реНрдЯрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗ рдХреЙрдкреА рдХрд┐рдпрд╛, рдФрд░ рдЯреНрд░реЗрд╕ рдПрдХ рдЬреЛрдбрд╝рд╛) (require('winston').config.syslog.levels)
{"рдЙрднрд░рдирд╛":0,"рдЕрд▓рд░реНрдЯ":1,,"рдХреНрд░рд┐рдЯ":2,,"рддреНрд░реБрдЯрд┐":3,"рдЪреЗрддрд╛рд╡рдиреА":4,"рдиреЛрдЯрд┐рд╕":5,"рдЬрд╛рдирдХрд╛рд░реА":6,"рдбреАрдмрдЧ":7, " рдЯреНрд░реЗрд╕":8}
рдЬрдм рдореИрдВрдиреЗ рдСрд░реНрдбрд░ рдХреЛ рдЙрд▓реНрдЯрд╛ рдХрд┐рдпрд╛, рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░ рдЧрдпрд╛ ... рдореБрдЭреЗ рдпрд╣ рдЕрдЬреАрдм рд▓рдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ syslog.levels рдЙрд▓реНрдЯреЗ рд╣реИрдВред
{"рдЙрднрд░рдирд╛":8,"рдЕрд▓рд░реНрдЯ":7,"рдХреНрд░рд┐рдЯ":6,"рддреНрд░реБрдЯрд┐":5,"рдЪреЗрддрд╛рд╡рдиреА":4,"рдиреЛрдЯрд┐рд╕":3,"рдЬрд╛рдирдХрд╛рд░реА":2,"рдбреАрдмрдЧ":1, " рдЯреНрд░реЗрд╕":0}
рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдм рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред
рдЕрдЬреАрдм рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╕рд┐рд╕рд▓реЙрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдСрд░реНрдбрд░ рдЙрд▓рдЯрд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рднреА рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
+1 @lucastschmidt рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╕реНрддрд░реЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдХрд╛рдо рдХреНрдпреЛрдВ рд╣реБрдЖ; рдХреНрдпрд╛ рдпрд╣ рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рдореВрд▓реНрдпреЛрдВ рдмрдирд╛рдо syslog рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдирд╛ рдерд╛?
рдЦреИрд░ @ kb19 , рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ, рдореИрдВрдиреЗ рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреАред
рдПрдХ рдЕрдзрд┐рдХ рдкреВрд░реНрдг рдХрд╛рд░реНрдп рд╕реЗрдЯ: https://github.com/Offirmo/html_tests/blob/master/incubator/_nodexps/winston_004_custom_levels/server.js
рд╣рд╛рдп, рдореБрдЭреЗ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереАред рдореИрдВрдиреЗ рдЗрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рдЖрджреЗрд╢ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛
рд╡рд░ рд╡рд┐рдиреНрдпрд╛рд╕ = {
рд╕реНрддрд░: {
рдбрд┐рдмрдЧ: 0,
рдЬрд╛рдирдХрд╛рд░реА: 1,
рд╕рд╣рд╛рдпрддрд╛: 2,
рдЪреЗрддрд╛рд╡рдиреА: 3,
рддреНрд░реБрдЯрд┐: 4,
рдбреЗрдЯрд╛: 5,
рдЗрдирдкреБрдЯ: 6,
рдХреНрд░рд┐рдпрд╛: 7,
рд╕рдВрдХреЗрдд: 8,
рдореВрд░реНрдЦ: 9
},
colors: {
debug: 'blue',
info: 'green',
help: 'cyan',
warn: 'yellow',
error: 'red',
data: 'grey',
input: 'grey',
verbose: 'cyan',
prompt: 'grey',
silly: 'magenta'
}
};
+1 рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рдВрдЧ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддреЗред рдпрд╣рд╛рдВ рдФрд░ рдореБрдЦреНрдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред
рд╣рд╛рдБ, рдореБрдЭреЗ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╕рдВрдХреЗрдд рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ?
+1
рдбрд┐рдЯреНрдЯреЛ: +1:
рдирдорд╕реНрддреЗ,
рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рдлрд╛рдЗрд▓ рдореЗрдВ рдЕрдкрдиреЗ рдХрд╕реНрдЯрдо рд▓реЙрдЧ рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдХрд╕реНрдЯрдо рд▓реЙрдЧ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде, рдбрд┐рдмрдЧ рднреА рдлрд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ? рдХреГрдкрдпрд╛ рдЙрддреНрддрд░ рджреЗрдВ
рдореЗрд░рд╛ рд╕рдВрд╕реНрдХрд░рдг рджреЗрдЦреЗрдВ: https://gist.github.com/vikas5914/cf568748ac89446e19ecd5e2e6900443
@vikas5914 рдХреЗ рдереНрд░реЗрдб рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ, рдореИрдВрдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ level:
рд▓рдХрдбрд╝рд╣рд╛рд░рд╛/рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЙрдЧ рд╕реНрддрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЙрдЧ рд╕реНрддрд░ рдХреА рд╕реАрдорд╛ рд╣реИ, рдФрд░ рд╕рдм рдХреБрдЫ 'рдиреАрдЪреЗ' (рдЕрд░реНрдерд╛рддреН рдЕрдзрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде) рд╣реЛрдЧрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд╕рдордЭрд╛рдПрдЧрд╛ рдХрд┐ рдпрд╣рд╛рдВ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдкрдиреЗ рд▓реЙрдЧ рд╕реНрддрд░реЛрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рдмрджрд▓рдХрд░ рд╕рдлрд▓рддрд╛ рдХреНрдпреЛрдВ рдорд┐рд▓реАред
рдХреНрдпрд╛ рдХреЛрдИ рдХрд╛рдордХрд╛рдЬреА рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдЧрд╛?
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рдЦреЛрджрдиреЗ рдФрд░ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдФрд░ рдЗрд╕ рдереНрд░реЗрдб рдореЗрдВ рдореИрдВрдиреЗ рджреЗрдЦреЗ рдЧрдП рд╕рднреА рдХреЛрдб рдирдореВрдиреЗ рд╕реЗ, рдЕрдкреЗрдХреНрд╖рд╛ рдпрд╣ рд╣реИ рдХрд┐ рд▓реЙрдЧрд░ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрддрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдХрд╕реНрдЯрдо рд╕реНрддрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХрдорд╛рддреНрд░ рдЖрд╡рд╢реНрдпрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИред
рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЙрдЧрд░ рд╕реНрддрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд░рд┐рд╡рд╣рди рд╕реНрддрд░ рднреА рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ, рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдирд┐рдореНрди рдореЗрдВ рдмрджрд▓рдирд╛:
рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ lib/winston/logger.js рдореЗрдВ рдЗрд╕ рд╕рд╢рд░реНрдд рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рд╣реИ:
рдЪреВрдВрдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ Transport.level lib/winston/transports/transport.js рдореЗрдВ
info
рд╕реЗрдЯ рд╣реИ:рд▓рдХрдбрд╝рд╣рд╛рд░реЗ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрддрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдХрд╕реНрдЯрдо рд╕реНрддрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
info
рд╕реНрддрд░ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВрдпрджрд┐ рдпрд╣ рдбрд┐рдЬрд╝рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╕рд╢рд░реНрдд рдФрд░ рдордЬрдмреВрд░ рдЪрд░ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЛ рдмрджрд▓рдХрд░ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣реЛрддрд╛ рд╣реИ, рдкреНрд░рд▓реЗрдЦрди рдереЛрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рднреНрд░рдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рднреАред
рдореБрдЭреЗ рдпрд╛ рддреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА, рдмрд╕ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдЖрдк рдХрд┐рд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдзрдиреНрдпрд╡рд╛рдж!