Winston: Format Log Kustom untuk File sepertinya tidak berfungsi

Dibuat pada 2 Apr 2015  ·  4Komentar  ·  Sumber: winstonjs/winston

Hai,

saya menggunakan fungsi formatter Anda untuk menyediakan format khusus ke pesan log saya. Ia bekerja sempurna untuk transport.Console tetapi transport.File jahitan untuk mengabaikan formatter kustom.

inilah pemformat file khusus saya:

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) : '' );
}

yang penting logger diberikan dalam contoh Anda. Saya menerapkannya seperti ini:

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

tetapi output dalam file logging tetap sama:
{"level":"info","message":"INITIALISEING","timestamp":"2015-04-02T06:29:57.982Z"}
harus:
{"level":"[INFO]","message":"INITIALISEING","timestamp":"2015-04-02T06:29:57.982Z"}

Saya tidak tahu apa yang salah karena hal yang sama bekerja dengan transport.Console.

tolong bantu

Salam pembuka

Tonacate

Komentar yang paling membantu

Baiklah jangan dipikirkan.
lupa mengatur
json: false

tetapi akan lebih keren jika Anda dapat mengubah hanya beberapa bidang di json logging :)

Semua 4 komentar

Baiklah jangan dipikirkan.
lupa mengatur
json: false

tetapi akan lebih keren jika Anda dapat mengubah hanya beberapa bidang di json logging :)

Butuh sedikit waktu untuk mencari tahu di mana harus mengatur "json: false". Atur pada file transport(s). Inilah contoh saya:

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

formatter berfungsi dengan baik untuk saya tetapi stempel waktu selalu mencetak string literal

fungsi () {
const d = Tanggal baru();
kembali d.getHours() + : + d.getMinutes() + : +
d.getSeconds() + m + d.getMilliseconds();
}|DEBUG|Pesan untuk Debug
fungsi () {
const d = Tanggal baru();
kembali d.getHours() + : + d.getMinutes() + : +
d.getSeconds() + m + d.getMilliseconds();
}|DARURAT|Pesan untuk Debug

Baiklah jangan dipikirkan.
lupa mengatur
json: false

tetapi akan lebih keren jika Anda dapat mengubah hanya beberapa bidang di json logging :)

Anda menghemat waktu saya! Saya ingin tahu di mana ini didokumentasikan..

Apakah halaman ini membantu?
0 / 5 - 0 peringkat