Winston: рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рд▓реЙрдЧ рдкреНрд░рд╛рд░реВрдк рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 2 рдЕрдкреНрд░реИрд▓ 2015  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: winstonjs/winston

рдирдорд╕реНрддреЗ,

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд▓реЙрдЧ рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ рдПрдХ рдХрд╕реНрдЯрдо рдкреНрд░рд╛рд░реВрдк рдХреА рдЖрдкреВрд░реНрддрд┐ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдлреЙрд░реНрдореЗрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдпрд╣ рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХрдВрд╕реЛрд▓ рд▓реЗрдХрд┐рди рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯред рдХрд╕реНрдЯрдо рдлреЙрд░реНрдореЗрдЯрд░ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓ рд╕реАрдоред

рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдХрд╕реНрдЯрдо рдлрд╝рд╛рдЗрд▓ рдлрд╝реЙрд░реНрдореЗрдЯрд░ рд╣реИ:

function customFileFormatter (options) {
    // Return string will be passed to logger.
    return options.timestamp() +' ['+ options.level.toUpperCase() +'] '+ (undefined !== options.message ? options.message : '') +
     (options.meta && Object.keys(options.meta).length ? '\n\t'+ JSON.stringify(options.meta) : '' );
}

рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд▓реЙрдЧрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реВрдВ:

winston.add(winston.transports.File, { 
    name: 'info-file',
    filename: logPath + '/info.log',
    level: 'info',
    maxsize: 15000000,
    formatter: customFileFormatter
});

рд▓реЗрдХрд┐рди рд▓реЙрдЧрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рд╡рд╣реА рд░рд╣рддрд╛ рд╣реИ:
{"level":"info","message":"INITIALISEING","timestamp":"2015-04-02T06:29:57.982Z"}
рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
{"level":"[INFO]","message":"INITIALISEING","timestamp":"2015-04-02T06:29:57.982Z"}

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣реА рдкрд░рд┐рд╡рд╣рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИредрдХрдВрд╕реЛрд▓ред

рдХреГрдкрдпрд╛ рд╕рд╣рд╛рдпрддрд╛ рдХреАрдЬрд┐рдП

рдЕрднрд┐рд╡рд╛рджрди

рдЯреЛрдирдХреЗрдЯ

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

рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВред
рд╕реЗрдЯ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛
json: false

рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЖрдк рдЬреЗрд╕рди рд▓реЙрдЧрд┐рдВрдЧ рдореЗрдВ рдХреБрдЫ рдлрд╝реАрд▓реНрдб рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ :)

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

рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВред
рд╕реЗрдЯ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛
json: false

рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЖрдк рдЬреЗрд╕рди рд▓реЙрдЧрд┐рдВрдЧ рдореЗрдВ рдХреБрдЫ рдлрд╝реАрд▓реНрдб рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ :)

рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╕рд╛ рд▓рдЧрд╛ рдХрд┐ "рдЬреЗрд╕рди: рдЭреВрдард╛" рдХрд╣рд╛рдВ рд╕реЗрдЯ рдХрд░реЗрдВред рдЗрд╕реЗ рдлрд╝рд╛рдЗрд▓ рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

const logFormatter = function(options) {
    // Return string will be passed to logger.

    return options.timestamp() +` `+ options.level.toUpperCase() +
        ` `+ (options.message ? options.message : ``) +
        (options.meta && Object.keys(options.meta).length ?
            `\n\t`+ JSON.stringify(options.meta) : `` );
};

const timestamp = function() {
    const d = new Date();
    return d.getHours() + `:` + d.getMinutes() + `:` +
        d.getSeconds() + `m` + d.getMilliseconds();
};

const logger = new (winston.Logger)({
    transports: [
        new (winston.transports.File)({
            timestamp: timestamp,
            formatter: logFormatter,
            level: `silly`,
            name: `fileAll`,
            filename: `fileAll.log`,
            json: false,                                 // set json:false on the file transport(s)
        })
    ]
});

рдлрд╝реЙрд░реНрдореЗрдЯрд░ рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╣рдореЗрд╢рд╛ рдПрдХ рд╢рд╛рдмреНрджрд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ

рд╕рдорд╛рд░реЛрд╣ () {
рдХреЙрдиреНрд╕реНрдЯ рдбреА = рдирдИ рддрд┐рдерд┐ ();
рд╡рд╛рдкрд╕реА d.getHours() + : + d.getMinutes() + : +
d.getSeconds() + m + d.getMilliseconds();
}|рдбреАрдмрдЧ|рдбреАрдмрдЧ рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢
рд╕рдорд╛рд░реЛрд╣ () {
рдХреЙрдиреНрд╕реНрдЯ рдбреА = рдирдИ рддрд┐рдерд┐ ();
рд╡рд╛рдкрд╕реА d.getHours() + : + d.getMinutes() + : +
d.getSeconds() + m + d.getMilliseconds();
}|рдЖрдкрд╛рддрдХрд╛рд▓реАрди|рдбреАрдмрдЧ рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢

рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВред
рд╕реЗрдЯ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛
json: false

рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЖрдк рдЬреЗрд╕рди рд▓реЙрдЧрд┐рдВрдЧ рдореЗрдВ рдХреБрдЫ рдлрд╝реАрд▓реНрдб рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ :)

рдЖрдкрдиреЗ рдореЗрд░рд╛ рд╕рдордп рдмрдЪрд╛рдпрд╛! рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд╣рд╛рдВ рд╣реИ ..

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

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

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

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

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

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

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