Winston-Rotate форматтер не вызывается Winston Logger - PullRequest
0 голосов
/ 01 июля 2019

Я пытаюсь записать журналы JSON в файл, который вращается по размеру. Я попытался следующий код, но «formmatter» не вызывается, как ожидалось.

import path from "path";
import winston from "winston";
require('winston-logrotate');

const myFormat = function(options) {
    console.log("formatter was called");
    var noEndOfLineMessage = options.message.substring(0, options.message.length-1);
    return `{"data-collection":{"graph-proxy":{"level":"${options.level}","message":${noEndOfLineMessage}}}}`;
    };

export const createFileLogger = () => {
    let filepath = path.join(GRAPH_LOG_PATH , GRAPH_LOG_NAME );
    console.log("Building logger.... with " + filepath);
    let rotate_transformer = new (winston.transports.Rotate)({
        file: filepath, // this path needs to be absolute
        colorize: false,
        json: true,
        size: 1000,
        keep: MAX_LOG_FILES,
        handleExceptions: true,
        compress: false,
        formatter: myFormat

    });

    rotate_transformer.formatter = myFormat;

    var win_logger = new (winston.Logger)({
        options: { format: myFormat},
        transports: [rotate_transformer] });


    win_logger.stream = {
        write: function(message, encoding){
            win_logger.info(message);
        }
    };

    return win_logger
};



export default createFileLogger;

Я использую

 "winston": "2.4.4",
 "winston-logrotate": "1.3.0"

Итак, проблема, как я вижу, в том, что «формирователь» не вызывается, когда я использую другой преобразователь, он работает, но не с вращающимся.

Ценю любую помощь

...