log4js-node配置
Category:
是指對日誌進行分類,category的名字即是日誌分類的標籤,比如按模塊進行分類「database」、「auth」;
同一個分類的日誌,使用相同的appenders,因為category中指定了appender;
必須定義一個名為"default"的分類,用來將無法匹配的請求指向此默認分類;
category的名稱會出現在具體日誌中;
category支持簡單的層級,通過英文句號來識別層級。舉例:如果代碼中將日誌歸類到"app.submodule",而執行時發現沒有此category的定義,系統會自動尋找其上一級分類"app"並將日誌記錄到此分類下,如果上一級分類也不存在,系統則按你要求的名字自動創建分類,appender將會是默認的default,如:log4js.getLogger("somecategory");
category是對日誌按重要級別、系統模塊等進行分類,真正決定日誌格式、保存類型的是appender;
Appenders
datefile:
用於按日期時間對日誌進行分割記錄,而不按文件大小;
需要在應用停止時調用log4js.shutdown,以確保所有非同步寫入(node.js的特性)的數據能夠完成執行;
"filename":是指日誌文件存儲的路徑和文件名;
"pattern":採用標準的日期格式,按分鐘記錄的格式是"yyyy-MM-dd-hh-mm",一般按天或者小時記錄足矣;
默認當前正在記錄的日誌文件名與"filename"中設置的文件名相同,如果指定的時間周期結束,這個日誌文件會被重名為"filename"+"pattern",作為備份。例如:"app.log"在備份時將被命名為"app.log.2018-04-30";
"alwaysIncludePattern":默認值false,如果設為true,則當前正在記錄的日誌文件也會命名為"filename"+"pattern";
"daysToKeep":決定了備份文件的存放天數,超過了將自動刪除,默認值0代表永久保存;
"encoding":文件編碼,默認"utf-8",一般不用賦值;
"compress":是否壓縮備份文件,默認false,設為true時將採用gz格式進行壓縮;
"keepFileExt":是否在重命名備份文件時保留擴展名,默認為false,設為true時備份文件將被命名為"app.2018-04-30.log"而不是"app.log.2018-04-30";
file:
用於按文件大小來對日誌進行記錄和分割,並允許最多生成多少個備份文件;
需要在應用停止時調用log4js.shutdown,以確保所有非同步寫入(node.js的特性)的數據能夠完成執行;
"filename":是指日誌文件存儲的路徑和文件名;
"maxLogSize":日誌文件的最大位元組數,int值,如果不賦值所有日誌將不斷累加到一個文件上,不推薦。舉例:10M的值是10485760,20M的數值是:20971520;
"backups":要保留的備份文件個數,int值,默認5,超過後新的備份文件會替換掉最早的備份。備份文件的命名格式為"filename"+數字,例如"app.log.1";
fileSync:與"file"的唯一差別在於日誌是強制同步寫入的,適用於日常調試,生產環境不建議使用,同步會導致性能下降;
logLevelFilter:
事件級別過濾器,強制某個appender記錄指定級別範圍的事件,比如把某些嚴重錯誤記錄到獨立的文件或者通過郵件發出通知;
"appender": 需要載入過濾器的appender的名稱,必須是已經定義過的appender;
"level":需要過濾的最低事件級別,比如:"WARN",無默認值;
"maxLevel":需要過濾的最高事件級別,默認:"FATAL";
multiFile:
將不同類型的事件記錄到不同的文件,產生多個使用中的日誌文件。是一種將日誌按"category"進行分類記錄的方法。作為"file"類型appender的擴展,支持"file"的屬性,比如通過"maxLogSize"對文件進行分割;
"base":日誌存儲的路徑和文件名中固定的值,例如:"logs/"指定了目錄路徑,"logs/app"指定了目錄路徑和部分文件名;
"property":用於將日誌拆分成多個文件的特徵,以官方示例所示目前最適用的是"categoryName",也可以是"pid","level";
"extension":文件的後綴,後綴名前需要加英文句號,例如:".log";
"timeout":選填,int值,代表多少ms後自動關閉日誌文件的寫入,官方沒提默認值是多少;
recording:將日誌記錄到內存中,不產生日誌文件,主要用於測試。日誌以數組的形式在內存中存儲,所有使用該appender的實例都共享這個數組。具體見官方文檔:https://log4js-node.github.io/log4js-node/recording.html;
tcp & tcp-server:主要用於多台伺服器時,同步日誌到master,交互的數據要求必須是JSON格式的字元串。具體見官方文檔:https://log4js-node.github.io/log4js-node/tcp.html
smtp:
將日誌通過郵件發送指定收件人,同樣需要在應用停止時調用log4js.shutdown;
需要單獨安裝npm模塊"@log4js-node/smtp";
詳見介紹見官方文檔:https://github.com/log4js-node/smtp;
團隊開發時,不同的日誌需要發送給不同的人,可以通過category來控制;
發送間隔只有一個屬性"sendInterval"來控制,以秒為單位,如果白天、夜間、工作日、節假日分別有不同的要求,官方插件並不支持,需要自己寫代碼來實現;
TAG:瓦力爸爸 |