Я смотрел на верхние системы регистрации узлов: 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. Это способ сделать это, или есть какой-то другой способ?