NodeJS 中的缩进多行日志记录

yel*_*int 6 javascript console logging stdout node.js

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

在测试缩进时,我希望对象日志行向右缩进足够远(例如,3-4 个制表符空格),以便它们在正确的describe()组中可识别。

我怎么能用像console.log或这样的东西来实现这一目标process.stdout.write

Min*_*our 9

如果只是用于 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');
Run Code Online (Sandbox Code Playgroud)

在当前浏览器和最新节点上运行良好。npm 上还有一个包,如果您使用的是较旧的节点版本,它可能仅适用于此。

节点控制台组

这会将整个 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;
Run Code Online (Sandbox Code Playgroud)
<pre id="results"></pre>
Run Code Online (Sandbox Code Playgroud)