Winston: يبدو أن تنسيق السجل المخصص للملفات لا يعمل

تم إنشاؤها على ٢ أبريل ٢٠١٥  ·  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

ولكن سيكون رائعًا إذا كان بإمكانك تغيير بعض الحقول فقط في تسجيل 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.getHours () + : + d.getMinutes () + : +
d.getSeconds () + m + d.getMilliseconds () ؛
} | تصحيح | رسالة من أجل التصحيح
وظيفة () {
const د = تاريخ جديد () ؛
إرجاع d.getHours () + : + d.getMinutes () + : +
d.getSeconds () + m + d.getMilliseconds () ؛
} | الطوارئ | رسالة من أجل التصحيح

حسنا لا بأس.
نسيت أن تحدد
json: false

ولكن سيكون رائعًا إذا كان بإمكانك تغيير بعض الحقول فقط في تسجيل json :)

لقد وفرت وقتي! أتساءل أين تم توثيق هذا ..

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات