我正在用我的node.js應用程序使用winston日誌記錄並定義了文件傳輸。在我的代碼中,我使用logger.error
,logger.warn
或logger.info
來記錄日誌。如何在Winston/Node.js中設置日誌級別?
我的問題是,我該如何指定日誌級別?是否有可以設置的配置文件和值,以便只記錄相應的日誌消息?例如,我希望日誌級別在我的開發環境中爲「信息」,但生產中爲「錯誤」。
我正在用我的node.js應用程序使用winston日誌記錄並定義了文件傳輸。在我的代碼中,我使用logger.error
,logger.warn
或logger.info
來記錄日誌。如何在Winston/Node.js中設置日誌級別?
我的問題是,我該如何指定日誌級別?是否有可以設置的配置文件和值,以便只記錄相應的日誌消息?例如,我希望日誌級別在我的開發環境中爲「信息」,但生產中爲「錯誤」。
貌似有傳入的選項級別選項覆蓋here
從這個DOC:
var logger = new (winston.Logger)({
transports: [
new (winston.transports.Console)({ level: 'error' }),
new (winston.transports.File)({ filename: 'somefile.log' })
]
});
現在,這些例子說明在選擇對象到控制檯運輸傳球水平。當您使用文件傳輸時,我相信您會傳遞一個選項對象,該對象不僅包含文件路徑,還包含關卡。
這應該導致這樣的:
var logger = new (winston.Logger)({
transports: [
new (winston.transports.File)({ filename: 'somefile.log', level: 'error' })
]
});
每那個文件夾,還要注意爲2.0,它暴露了執行setLevel方法在運行時更改。查看該文檔的使用日誌級別部分。
有在Winston 6個默認級別:傻= 0(最低),調試= 1,詳細= 2,信息= 3,警告= 4,誤差= 5(最高)
在創建記錄器傳輸,您可以指定日誌級別,如:
new (winston.transports.File)({ filename: 'somefile.log', level: 'warn' })
上面的代碼將日誌級別設置爲warn
,這意味着silly
,verbose
和info
將無法輸出到somefile.log,而warn
,debug
和error
意志。
您也可以定義自己的水平:
var myCustomLevels = {
levels: {
foo: 0,
bar: 1,
baz: 2,
foobar: 3
}
};
var customLevelLogger = new (winston.Logger)({ levels: myCustomLevels.levels });
customLevelLogger.foobar('some foobar level-ed message');
注意,最好是始終在自己的自定義級別6級預先限定的水平,萬一某處使用預定義的水平。
陳,感謝您的回答。上面我接受了Bryan的回答。但你的也很有幫助。 – 2013-03-21 18:11:49
抱歉,@Chen錯了。調試比verbose低。建議編輯。 – 2014-08-12 16:33:28
@filsmick你是對的。當我編寫這個答案時,調試比冗長,但現在詳細較高。 – Chen 2014-08-14 03:38:14
您可以通過修改相應的運輸level
屬性更改在運行時的日誌記錄級別:
var log = new (winston.Logger)({
transports: [
new (winston.transports.Console)({ level : 'silly' })
]
});
...
// Only messages with level 'info' or higher will be logged after this.
log.transports.Console.level = 'info';
我想,它的工作原理類似文件,但我還沒有試過。
winston = require('winston');
:
:
winston.level = 'debug';
將設置日誌級別爲「調試」。 (使用winston 0.7.3測試)
是的,這是正確的答案,其他人需要創建一個新的記錄器,並且不要調整由winston創建的現有默認記錄器的設置。 – 2014-08-01 03:06:53
如果您想要動態更改日誌級別。就像你需要在短時間內追蹤生產問題;然後恢復到錯誤日誌級別。您可以使用動態記錄器,只要您可以在網絡上公開服務https://github.com/yannvr/Winston-dynamic-loglevel
bryanmac,感謝您的回覆,但我仍然不回答我的問題。讓我澄清一下。在我以前的工作中,我們使用了一個與winston非常相似的自定義日誌記錄模塊。該模塊依賴於設置日誌級別的配置文件中的條目。如果我們必須調試任何問題,我們會更改配置文件中的條目,以增加日誌的冗長度。但在其他時間,我們會將該級別設置爲最低級別以便僅記錄錯誤。溫斯頓可能會這樣嗎? – 2013-03-21 02:33:53
上面的編程代碼可以從日誌文件中讀取以設置初始日誌記錄級別。現在,要在運行時從初始/默認級別更改,可以公開一個轉身並調用我提到的setLevel方法的API。這樣你就可以擁有一個讀取日誌級別的管理頁面並設置它。 – bryanmac 2013-03-21 04:42:51
布賴恩,我打算接受你最初的回答+你的評論作爲我的問題的答案。謝謝。 – 2013-03-21 18:10:48