gpt4 book ai didi

node.js - 记录器未按要求保存所有日志信息 - Node js 异步

转载 作者:太空宇宙 更新时间:2023-11-03 22:29:30 26 4
gpt4 key购买 nike

我有一个运行良好的 winston 记录器:

var systemLogger = new (winston.Logger)({
transports: [
new (winston.transports.Console)({
timestamp: function () {
return moment().format('D/MM/YYYY HH:mm:ss:SSS')
},
colorize: true
}),
new (require('winston-daily-rotate-file'))({
filename: 'logs/-system.log',
datePattern: 'dd-MM-yyyy',
prepend: true,
json: false,
timestamp: function () {
return moment().format('D/MM/YYYY HH:mm:ss:SSS')
},
formatter: formatter
})
]
})

我在程序中调用这个记录器:

var systemLogger = require('./logging.js')

var asyncTasks = []

asyncTasks.push(function(callback) {
systemLogger.info('Saved the Updates', {
'URL': url
})
callback()
})

asyncTasks.push(function(callback) {
systemLogger.info('Status Updates', {
'Status': status
})
callback()
})

async.parallel(asyncTasks, function(error, data) {
if (!done) {
process.exit(!error)
}
})

我已经尽可能地简化了我的代码,但想法是我在整个程序中生成了不同的日志消息,我将它们添加到数组中并并行运行它们。

现在....这会导致一个问题。所有日志消息都会打印到控制台,但只有一条消息保存到我的实际日志文件中。这是为什么?

我尝试注释掉日志消息并重新运行程序,但在上面的示例中仍然只保存了一条消息。任何帮助将不胜感激!

假设 - 这可能是因为我同时将信息保存到同一个日志文件中 - 但这只是两小行,所以我假设如果它在控制台中打印,它也应该正确保存?

最佳答案

我已经尽可能地完成了你的代码,并得到了这个。该代码工作正常,并且在控制台和文件中记录都没有错误。

如果可能的话,运行 Node v.4.4.5。

如果某些原因导致写入文件失败,则它不在代码的这一部分中。

test.js:

'use strict';

//Dependencies
const async = require('async'),
systemLogger = require('./logging.js');

//Test variables
const url = 'redblueyellow',
status = 'goldsilvercrystal';

let asyncTasks = [];

asyncTasks.push(function(callback) {
systemLogger.info('Saved the Updates', {
'URL': url
});
callback();
});

asyncTasks.push(function(callback) {
systemLogger.info('Status Updates', {
'Status': status
});
callback();
})

async.parallel(asyncTasks, function(error, data) {
console.log('error: ' + error);
console.log('data: ' + data);
});

logging.js:

'use strict';

//Dependencies
const winston = require('winston'),
moment = require('moment');

//Export
let systemLogger = module.exports = new (winston.Logger)({
transports: [
new (winston.transports.Console)({
timestamp: function () {
return moment().format('D/MM/YYYY HH:mm:ss:SSS')
},
colorize: true
}),
new (require('winston-daily-rotate-file'))({
filename: 'logs/-system.log',
datePattern: 'dd-MM-yyyy',
prepend: true,
json: false,
timestamp: function () {
return moment().format('D/MM/YYYY HH:mm:ss:SSS')
}/*,
formatter: formatter*/
})
]
});

关于node.js - 记录器未按要求保存所有日志信息 - Node js 异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39661078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com