Ответ 1
Это две разные функции, которые выполняют две разные вещи. Научитесь читать источник. Это поможет вам много (даже на таких языках, как С# с отражателем).
Источники
Консоль
Console.prototype.warn = function() {
this._stderr.write(util.format.apply(this, arguments) + '\n');
};
Console.prototype.error = Console.prototype.warn;
Utils
exports.debug = function(x) {
process.stderr.write('DEBUG: ' + x + '\n');
};
Функции журнала:
Консоль
exports.log = function() {
process.stdout.write(format.apply(this, arguments) + '\n');
};
Utils
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');
}
};
Почему
Как и в любой другой ориентированной на Unix системе, которая node наиболее определенно ориентирована в образе - см. много комментариев Райана по этой теме, функции ведения журнала приведены в том же обличье. Существует два основных класса для ведения журнала, и оба они делают то же самое, но по разным причинам. Для случайного наблюдателя они одинаковы, но на самом деле это не так.
Ведение журнала консоли предназначено для использования во время отладки. Это перейдет в STDOUT и покажет ваши инструкции на консоли REPL 1 полезной для отладки.
Запись служебных данных предназначена для использования во время выполнения стандартных служб. Они перейдут в процесс STDOUT, который часто является файлом журнала для процесса.
Но поскольку это может быть внешне переопределено по мере необходимости и потому, что в будущем (скорее всего) для процессов Windows (с учетом новых портов и разработок) и других систем оно будет отличаться, то вы должны попытаться использовать эти методы как фактический способ записи в журналы во время нормальной работы. Примеры того, как они будут отличаться в Windows, включают использование системного журнала для ведения журнала, в отличие от прямого файла журнала.
Итак, как вы знаете, какой из них вам нужен?
Если вы планируете запустить это в REPL для отладки, используйте консольный регистратор. Если вы намереваетесь запустить службу и забыть об этом, используйте протокол utils.
1 – Прочитать оценку цикла печати