我正在查看頂級節點日誌記錄系統:npmlog
,log4js
,bunyan
和winston
,並決定使用winston
來獲得每月下載次數最多的npm
。如何在console.log中記錄winston中的JavaScript對象和數組?
我想要設置的是自定義記錄器,我可以在開發環境中使用logger.debug(...)
,它不會在生產環境中記錄任何內容。這會幫助我,所以當我在開發環境中時,我不需要寫任何東西,因爲我會看到所有的輸出。
這是我現在有:當我試圖登錄的JavaScript Object
或Javascript Array
發生
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
});
問題。與Object
,我需要做toJSON()
,併爲Array
我需要第一個JSON.stringify()
,然後JSON.parse()
。
把所有這些方法都寫下來,記錄下我想要的東西並不好。此外,它甚至不是資源友好的,因爲在logger.debug()
意識到它在生產之前需要執行這些格式化方法,並且它不應該首先記錄它(基本上,它是在函數調用之前評估參數)。我只是喜歡多舊的時髦console.log()
記錄JavaScript對象和數組。
現在,當我寫這個問題時,我發現有一種方法可以爲每個winston transports
對象描述custom format。這是做的方式,還是有其他方式?
提供一些解釋給你的答案,爲什麼它的工作原理或OP做錯了什麼。只是像這樣的代碼粘貼被標記。 –
我在這裏看到的最佳解決方案。使用現有的記錄器api並打印一切。 –