Я смотрел на верхние системы регистрации узлов: npmlog, log4js, bunyan и winston и решил использовать winston для получения максимальной загрузки в bunyan npm.
То, что я хочу настроить, - это настраиваемый регистратор, который я смогу использовать в среде разработки с помощью logger.debug(...) которая не будет регистрировать ничего в рабочей среде. Это поможет мне, когда я нахожусь в среде разработки, мне не нужно ничего писать, так как я увижу все результаты.
Это то, что у меня есть сейчас:
var level = 'debug';
if (process.env.NODE_ENV !== 'development'){
level = 'production'; // this will never be logged!
}
var logger = new winston.Logger({
transports: [
// some other loggings
new winston.transports.Console({
name: 'debug-console',
level: level,
prettyPrint: true,
handleExceptions: true,
json: false,
colorize: true
})
],
exitOnError: false // don't crush no error
});
Проблема возникает, когда я пытаюсь зарегистрировать JavaScript Object или Javascript Array. С Object, мне нужно сделать toJSON(), а для Array мне нужно сначала JSON.stringify() а затем JSON.parse().
Нехорошо писать все это время, просто записывать то, что я хочу. Более того, это не даже дружественно к ресурсам, потому что эти методы форматирования должны быть выполнены до того, как logger.debug() поймет, что он работает, и что он не должен регистрировать его в первую очередь (в основном, он вычисляет аргументы перед вызовом функции), Мне просто нравится, как old-fashined console.log() регистрирует объекты JavaScript и массивы.
Теперь, когда я пишу этот вопрос, я обнаружил, что существует способ описания пользовательского формата для каждого объекта transports winston. Это способ сделать это, или есть какой-то другой способ?