當前位置:
首頁 > 最新 > log4js-node配置

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:瓦力爸爸 |