NodeJS中的缩进多行日志记录

时间:2015-09-12 16:11:58

标签: javascript node.js logging console stdout

我想将JSON.stringify()' d对象打印到控制台,作为Mocha测试套件输出的一部分用于上下文。

当测试缩进时,我希望对象日志行向右缩进(例如,3-4个制表符空格),使它们在右describe()组中可识别。

我如何通过console.logprocess.stdout.write

等方式实现这一目标

2 个答案:

答案 0 :(得分:4)

如果仅用于console.log,您可能需要查找组,请在控制台上查看:



var obj = {
  a : 1,
  b : 2,
  c: 3
  }

console.log('Non-tabbed');
console.group();
console.log(JSON.stringify(obj, null, 2));
console.groupEnd();
console.log('Back to non-tabbed');




它不是本地的node.js,但它适用于浏览器。在npm上有一个可能适用的软件包。

node-console-group

这会将整个JSON字符串移动3个空格。它用新行打破JSON字符串,然后在每行3个空格上添加一个新字符串,它将保持每一行的移位。



var results = document.getElementById('results');
var obj = {
    a: 5,
    b: 3,
    c: 4
};

var string = JSON.stringify(obj, null, 2);

var stringShifted = '';
string.split('\n').forEach(function(line){
    stringShifted += '   ' + line + '\n';
});
console.log(string);
console.log(stringShifted);

results.innerHTML = 'Before : \n' + string;
results.innerHTML += '\n\nAfter : \n' + stringShifted;

<pre id="results"></pre>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以在JSON.stringify输出上添加一个简短的reg-ex替换,以获得您所追求的效果。

var myObject = _buildAnObject();   

it("Should log my entire JSON.stringify indented", function(){
   console.log("My log message: \n\t" 
        + JSON.stringify(myObject, null, 2).replace(/\n\r?/g, '\n\t'));
   assert(true);
});

我在codepen.io上添加了一个有效的mocha示例。