log4js 关于 Appender 的介绍及回滚生成日志文件的方法 “dateFile ”
Log4js - Appenders
appender 將日志事件序列化為某種形式的輸出。可以寫文件,發送電子郵件,通過網絡發送數據。所有的 appender 都有一個 type 來決定哪個 appender 被使用。
例如:
const log4js = require('log4js'); log4js.configure({appenders: {out: { type: 'stdout' },app: { type: 'file', filename: 'application.log' }},categories: {default: { appenders: [ 'out', 'app' ], level: 'debug' }} });上面代碼定義了兩個 appender,一個叫out,一個叫app。out使用 stdout appender 來編寫標準輸出。app使用 file appender 將日志寫進 application.log 文件中。
Core Appenders
下面的 appender 都是 log4js 支持的。
- categoryFilter
- console
- dateFile
- file
- fileSync
- logFaces-HTTP
- logFaces-UDP
- logLevelFilter
- logstashHTTP
- multiFile
- multiprocess
- recording
- stderr
- stdout
- rabbitmq
有些需要額外的依賴項,而這些依賴項并不包含在log4js中(例如,smtp appender 需要 nodemailer),這些將在appender的文檔中注明。
dateFile / Date Rolling File Appender (日期滾動文件 appender)
這是一個 file appender,它基于一個可配置的時間來滾動日志文件。若使用 date file appender ,必須調用log4js.shutdown來確保應用程序終止時剩余異步寫是完成的。date file appender 使用 streamroller 庫,但該庫是 log4js 的一個依賴項,所以不需要自己包含它。
Configuration
- type - "dateFile"
- filename - string - 要寫入日志的文件路徑
- pattern - string (可選, 默認模式為 .yyyy-MM-dd) - 當前日志文件被重命名并且創建了一個新的日志文件時,pattern用來決定重命名后的文件名格式。例如,假設當前要寫入日志的文件叫 cheese.log,使用默認 pattern:.yyyy-MM-dd,則一開始會創建一個日志文件名為 cheese.log,到第二天 cheese.log 會被重命名為 cheese.log.2017-04-30 并且一個新的日志文件名為 cheese.log 又會被創建。 
 - appender 使用 date-format 庫來解析 pattern
- 另外要注意,沒有計時器控制日志滾動,模式的變化是在每一個日志寫入中確定的。如果沒有寫操作,就不會發生日志滾動。如果您的應用程序不頻繁地記錄,那么就可能導致在特定的時間段內沒有寫入日志文件。
 
- layout - (可選, 默認為基礎布局) - 布局
其他的配置參數將會傳遞給底層 streamroller 實現:
- encoding - string (默認為“utf-8”)
- mode- integer (默認為 0644)
- flags - string (默認為 ‘a’)
- compress - boolean (默認為 false) - 在滾動期間壓縮備份文件(備份文件將具有.gz擴展名)
- alwaysIncludePattern - boolean (默認為 false) - 在當前日志文件的名稱和備份中包含模式。
- daysToKeep - integer (默認為 0) - 如果這個值大于零,那么在日志滾動期間,將會刪除超過這段時間的文件。
- keepFileExt - boolean (默認為 false) - 在改變日志文件名時保留文件擴展名 (file.log 將會被改名為 file.2018-06-20.log 而不是 file.log.2018-06-20)
例子 (默認日志按天滾動)
log4js.configure({appenders: {everything: { type: 'dateFile', filename: 'all-the-logs.log' }},categories: {default: { appenders: [ 'everything' ], level: 'debug' }} });上面這個樣例將會按天生成日志記錄文件。初始文件為 all-the-logs.log,過一天后文件會被重命名為 all-the-logs.log.2018-06-20。
例子(日志按小時滾動并且進行壓縮備份)
log4js.configure({appenders: {everything: { type: 'dateFile', filename: 'all-the-logs.log', pattern: '.yyyy-MM-dd-hh', compress: true }},categories: {default: { appenders: [ 'everything' ], level: 'debug'}} });初始文件為 all-the-logs.log,這個文件每小時都會被壓縮并且被重命名為 all-the-logs.log.2018-06-20-10.gz,并且會重新生成一個文件 all-the-logs.log。
總結
以上是生活随笔為你收集整理的log4js 关于 Appender 的介绍及回滚生成日志文件的方法 “dateFile ”的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: H G W S哪一个不是状态函数_数据科
- 下一篇: 数据中心节能分析和节能技术简要总结
