編輯:找到答案,併爲未來的讀者發佈完整的答案。溫斯頓全定製文件輸出
我在Node.js的掌握了winston logging的基礎知識,並希望自定義我的記錄多一點。以下是我迄今爲止:
var winston = require('winston');
winston.remove(winston.transports.Console);
winston.add(winston.transports.Console, {'colorize': true});
winston.add(winston.transports.File,
{
'filename': 'testlog.log',
'timestamp': function() {return Date.now();},
}
);
// let's say I only want to log 'info' or 'error'
function loginfo(arg) {return winston.info(arg);}
function logerror(arg) {return winston.error(arg);}
輸出文件將是這樣的:
{"level":"info","message":"someinfo","timestamp":1470515515807}
{"level":"error","message":"someerror","timestamp":1470515515808}
我明白一個事實,即一個JSON格式標準日誌記錄很重要,因此我想保持幾乎標準的文件傳輸就這樣。
但因爲我確實讀這些日誌的每一行,我想開第三輸送到另一個文件,以提供完全定製格式只有我的眼睛,如:
1470515515807 info "someinfo"
1470515515808 error "someerror"
1470515519532 error HERE_GOES_SOME_COMPLEX_ERROR_MESSAGE_OR_OBJECT_
I_WANT_TO_SEE_AS_PRETTY_POSSIBLE_DESPITE_THE_FACT_IT_IS_VERY_COMPLEX
我已使some research和it seems there is no such functionnality直接可用在溫斯頓。我已經注意到了fancy bunyan CLI tool,但我想「看起來」更簡單。
問題:
1)有沒有內置的自定義輸出這將滿足我的要求記錄庫格式? [不能相信]
2)如果我必須自己對它進行硬編碼,可以給我一些指導(最佳做法是按照我想要的方式處理stdout而不會超載應用程序本身),特別是當它出現時複雜的對象返回的一些錯誤?