Я пытаюсь записать журналы 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"
Итак, проблема, как я вижу, в том, что «формирователь» не вызывается, когда я использую другой преобразователь, он работает, но не с вращающимся.
Ценю любую помощь