现在我使用以下信息显示信息:
console.log (kraken.id, markets)
但是,我想将所有进入控制台的信息写到一个文件中。完成以下代码怎么办?
'use strict';
var ccxt = require('ccxt');
(async () => {
let kraken = new ccxt.kraken ()
let markets = await kraken.load_markets ()
//console.log (kraken.id, markets)
//How to write above console.log to file?
const fs = require('fs');
fs.writeFile("/Users/Andreas/Desktop/NODE/myproject/files/test.txt", "allinfoAsstring", function(err) {
if(err) {
return console.log(err);
}
console.log("The file was saved!");
});
}) ()
答案 0 :(得分:1)
您可以尝试根据变量创建对象,并将其格式化为JSON字符串。
/* ... */
const obj = {kraken, markets}
const fs = require('fs');
fs.writeFile("/Users/Andreas/Desktop/NODE/myproject/files/test.txt", JSON.stringify(obj), function(err) {
if(err) {
return console.log(err);
}
console.log("The file was saved!");
});
稍后,您可以通过运行
从文件中检索值
fs.readFile('/Users/Andreas/Desktop/NODE/myproject/files/test.txt', 'utf8', function(err, data) {
const obj = JSON.parse(data)
console.log("The data from the file is: " + obj)
})
答案 1 :(得分:0)
在Node中,console.log()
调用util.inspect()
以打印对象。
您应该直接调用并将其写入文件。
答案 2 :(得分:0)
您可以使用JSON.stringify(obj)
,每个对象都可以通过此方法转换为字符串。
答案 3 :(得分:0)
我建议不要在生产环境中使用console.log,因为它会同步代码。 您可以改用winston
通过新的传输方式,您可以轻松地将所有日志归档(如果需要)
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
defaultMeta: { service: 'user-service' },
transports: [
//
// - Write to all logs with level `info` and below to `combined.log`
// - Write all logs error (and below) to `error.log`.
//
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});