如何将console.log写入文件

时间:2019-02-12 16:48:43

标签: javascript node.js

现在我使用以下信息显示信息:

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!");
}); 

}) ()

4 个答案:

答案 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' })
  ]
});