我注意到,node.js中既有console.error和util.debug,以及console.log和util.log.
除了控制台之外是否有区别.*功能在它们采用的参数中更加强大?API表示他们分别写入stdout和stderr.
如果没有区别,我应该使用哪个以及为什么?
jco*_*and 57
它们是两个不同的功能,它们做两件不同的事情.学习阅读来源.它会对你有很大的帮助(即使是像C#这样的反射器语言)
Console.prototype.warn = function() {
this._stderr.write(util.format.apply(this, arguments) + '\n');
};
Console.prototype.error = Console.prototype.warn;
Run Code Online (Sandbox Code Playgroud)
exports.debug = function(x) {
process.stderr.write('DEBUG: ' + x + '\n');
};
Run Code Online (Sandbox Code Playgroud)
exports.log = function() {
process.stdout.write(format.apply(this, arguments) + '\n');
};
Run Code Online (Sandbox Code Playgroud)
exports.log = function(msg) {
exports.puts(timestamp() + ' - ' + msg.toString());
};
exports.puts = function() {
for (var i = 0, len = arguments.length; i < len; ++i) {
process.stdout.write(arguments[i] + '\n');
}
};
Run Code Online (Sandbox Code Playgroud)
与其他所有面向Unix的系统一样,哪个节点绝对是以幌子为标准 - 请参阅Ryan关于该主题的许多评论,日志功能以相同的形式给出.记录有两个基本类,它们都有效地执行相同的操作,但原因各不相同.对于不经意的观察者来说,他们是一样的,但他们并不是真的.
控制台日志记录旨在在调试期间使用.这将转到STDOUT并在REPL 1控制台上显示您的语句,对调试很有用.
实用程序日志记录旨在在标准服务运行时期间使用.他们将转到进程 STDOUT,它通常是进程的日志文件.
但是,由于这可以在需要时向外覆盖,并且因为它将来(最有可能)对于Windows进程(给定新的端口和开发)和其他系统将是不同的,那么您应该尝试使用这些方法作为事实上的在正常运行时期间写入日志的方法.在Windows中它将如何不同的示例包括使用系统日志进行日志记录,而不是直接日志文件.
如果您计划在REPL中运行它以进行调试,请使用控制台记录器.如果您打算启动该服务并忘记它,请使用utils日志记录.
1 - 读取评估打印循环
Joh*_*ann 13
Joe Lapp对当前接受的答案的评论值得提出作为答案:
仅供参考:utils.print,.puts,.debug和.error现已全部弃用.建议使用console.log而不是.print和.puts,建议使用console.error而不是.debug和.error.请参阅utils代码
参考文献:
| 归档时间: |
|
| 查看次数: |
26527 次 |
| 最近记录: |