Оказывается, вы можете переопределить функции консоли в верхней части app.js файла, и он вступит в силу в любом другом модуле. Я получил смешанные результаты, потому что один из моих модулей раздвоен как child_process
. Как только я скопировал строку вверху этого файла, все работает.
Для записи, я установил модуль консольного-штамп (npm install console-stamp --save
), и добавили эту строку в верхней части app.js и childProcess.js:
// add timestamps in front of log messages
require('console-stamp')(console, '[HH:MM:ss.l]');
Моя проблема сейчас в том, что формат :date
в журнале подключений используется формат UTC, а не тот, который я использую в других консольных вызовах. Это было легко исправить, зарегистрировав свой собственный формат времени (и, как побочный эффект, требующий dateformat
модуль, который console stamp
поставляется с, а не установка другой):
// since logger only returns a UTC version of date, I'm defining my own date format - using an internal module from console-stamp
express.logger.format('mydate', function() {
var df = require('console-stamp/node_modules/dateformat');
return df(new Date(), 'HH:MM:ss.l');
});
app.use(express.logger('[:mydate] :method :url :status :res[content-length] - :remote-addr - :response-time ms'));
Теперь мои файлы журнала выглядят организованной (а еще лучше , распознаваем):
[15:09:47.746] staging server listening on port 3000
[15:09:49.322] connected to database server xxxxx successfully
[15:09:52.743] GET /product 200 - - 127.0.0.1 - 214 ms
[15:09:52.929] GET /stylesheets/bootstrap-cerulean.min.css 304 - - 127.0.0.1 - 8 ms
[15:09:52.935] GET /javascripts/vendor/require.js 304 - - 127.0.0.1 - 3 ms
[15:09:53.085] GET /javascripts/product.js 304 - - 127.0.0.1 - 2 ms
...
тесно связаны: [Можно ли привязать дату/время, чтобы журнал консоли?] (http://stackoverflow.com/questions/18410119/is-it-possible-to-bind-a-date-time-to-a-console-log) и [console.log ti mestamps в Chrome?] (http://stackoverflow.com/questions/12008120/console-log-timestamps-in-chrome) –