Winston: νŒŒμΌμ— λŒ€ν•œ μ‚¬μš©μž μ •μ˜ 둜그 ν˜•μ‹μ΄ μž‘λ™ν•˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2015λ…„ 04μ›” 02일  Β·  4μ½”λ©˜νŠΈ  Β·  좜처: winstonjs/winston

μ•ˆλ…•ν•˜μ„Έμš”,

λ‚΄ 둜그 λ©”μ‹œμ§€μ— μ‚¬μš©μž 지정 ν˜•μ‹μ„ μ œκ³΅ν•˜κΈ° μœ„ν•΄ 포맷터 κΈ°λŠ₯을 μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. Transport.Consoleμ—μ„œλŠ” μ™„λ²½ν•˜κ²Œ μž‘λ™ν•˜μ§€λ§Œ transport.File μ†”κΈ°λŠ” μ‚¬μš©μž 지정 포맷터λ₯Ό λ¬΄μ‹œν•©λ‹ˆλ‹€.

λ‚΄ μ‚¬μš©μž 지정 파일 ν¬λ§·ν„°λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

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"}

Transport.Consoleμ—μ„œλ„ λ™μΌν•˜κ²Œ μž‘λ™ν•˜κΈ° λ•Œλ¬Έμ— 무엇이 잘λͺ»λ˜μ—ˆλŠ”지 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

λ„μ™€μ£Όμ„Έμš”

인사말

ν† λ‚˜μΌ€μ΄νŠΈ

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

확인 κ²°μ½” 마음.
μ„€μ •ν•˜λŠ” 것을 μžŠμ—ˆλ‹€
json: false

ν•˜μ§€λ§Œ json λ‘œκΉ…μ—μ„œ 일뢀 ν•„λ“œλ§Œ λ³€κ²½ν•  수 μžˆλ‹€λ©΄ λ©‹μ§ˆ κ²ƒμž…λ‹ˆλ‹€. :)

λͺ¨λ“  4 λŒ“κΈ€

확인 κ²°μ½” 마음.
μ„€μ •ν•˜λŠ” 것을 μžŠμ—ˆλ‹€
json: false

ν•˜μ§€λ§Œ json λ‘œκΉ…μ—μ„œ 일뢀 ν•„λ“œλ§Œ λ³€κ²½ν•  수 μžˆλ‹€λ©΄ λ©‹μ§ˆ κ²ƒμž…λ‹ˆλ‹€. :)

"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)
        })
    ]
});

ν¬λ§·ν„°λŠ” 잘 μž‘λ™ν•˜μ§€λ§Œ νƒ€μž„μŠ€νƒ¬ν”„λŠ” 항상 λ¦¬ν„°λŸ΄ λ¬Έμžμ—΄μ„ μΈμ‡„ν•©λ‹ˆλ‹€.

κΈ°λŠ₯ () {
const d = μƒˆλ‘œμš΄ λ‚ μ§œ();
return d.getHours() + : + d.getMinutes() + : +
d.getSeconds() + m + d.getMilliseconds();
}|DEBUG|디버그 λ©”μ‹œμ§€
κΈ°λŠ₯ () {
const d = μƒˆλ‘œμš΄ λ‚ μ§œ();
return d.getHours() + : + d.getMinutes() + : +
d.getSeconds() + m + d.getMilliseconds();
}|비상|디버그 λ©”μ‹œμ§€

확인 κ²°μ½” 마음.
μ„€μ •ν•˜λŠ” 것을 μžŠμ—ˆλ‹€
json: false

ν•˜μ§€λ§Œ json λ‘œκΉ…μ—μ„œ 일뢀 ν•„λ“œλ§Œ λ³€κ²½ν•  수 μžˆλ‹€λ©΄ λ©‹μ§ˆ κ²ƒμž…λ‹ˆλ‹€. :)

당신은 λ‚΄ μ‹œκ°„μ„ μ ˆμ•½! 이게 μ–΄λ”” λ¬Έμ„œμΈμ§€ κΆκΈˆν•©λ‹ˆλ‹€..

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰