nodejs log4js 使用

本文章針對 log4js v4.3html

本文對本身用log4js的技術點簡單的作一個記錄,有一些技術點沒有用到或者寫全,會在後面用到的時候進行更新。node

先大概的對log4js 的基本用法作一個總結,使用configure()方法對日誌輸出進行配置,使用 getlogger()方法獲取logger對象,而後使用logger 對象進行打印各個級別的日誌。其中比較複雜的是 configure()方法中的配置對象appenders 和 categories 下面重點講解這兩個對象git

安裝

npm install --save log4jsgithub

日誌級別level

log4js的分爲如下幾個級別,級別的順序也是按以下排列,logger只會打印大於等於logger對象設置的level的日誌npm

  1. trace
  2. debug
  3. info
  4. warn
  5. error
  6. fatal

簡單的用法

var log4js = require('log4js');
var logger = log4js.getLogger();
logger.level = 'debug';
logger.debug("Some debug messages");
複製代碼

getLogger()方法返回一個logger對象,想對日誌進行記錄就必須使用logger對象,將logger對象的 level設置爲debug(默認爲OFF不會輸出任何日誌)json

在node 環境運行上面的代碼以後發如今控制檯打印出了對應的日誌信息,可是這跟我想要的徹底不同,我想要的是根據我本身的想法將日誌進行分類方便查找和統計。接下來咱們就看如何對日誌進行分類。api

configure(string | object) 方法

經過調用configure 方法就能夠實現咱們對日誌進行分類管理的目的。方法的參數能夠是一個字符串或者是一個object 字符串參數被視爲用於加載配置的文件名,配置文件是一個json 文件,也能夠直接將配置對象傳給configure。bash

配置對象

本次只對配置對象中最經常使用的appenderscategories 進行介紹,還有部分屬性暫時尚未用到等用到的時候在進行補充,若是日常用的話這兩個屬性應該就夠了。app

簡單的總結一下這兩個屬性,先有一個概念性的認識瞭解一下他們分別是幹什麼的。 appenders 主要是用來定義以怎樣的方式輸出,輸出到哪裏(主要功能不只限於) categories 是用來定義日誌輸出的規則而後調用以前定義好的 appenders 進行輸出ui

寫一個簡單的例子方便理解一下

const log4js = require('log4js');
log4js.configure({
  appenders: {
    out: { type: 'stdout' },
    app: { type: 'file', filename: 'application.log' }
  },
  categories: {
    default: { appenders: [ 'out', 'app' ], level: 'debug' }
  }
});

var logger = log4js.getLogger();
logger.debug("Some debug messages");
複製代碼

運行上的代碼將會建立application.log 文件在項目目錄下,同時會把日誌打到控制檯和 application.log文件中. 上面定義了兩個appender 一個是輸出到 stdout 一個是輸出到 file ,能夠看出appender主要使用來定義輸出位置的 同時在categories 中定義了一個規則,調用了appender中定義的輸出,而且輸出級別爲 debug

appenders

appenders 的是一個map, key 表明的是appender的名字是一個字符串,value裏面有一個必選的屬性是type,根據type 的不一樣value 的格式也不同,下面咱們說幾種經常使用的 type

file

file 日誌將會輸出到指定的文件中。

例子

log4js.configure({
  appenders: {
    everything: { type: 'file', filename: 'all-the-logs.log' }
  },
  categories: {
    default: { appenders: [ 'everything' ], level: 'debug' }
  }
});

const logger = log4js.getLogger();
logger.debug('I will be logged in all-the-logs.log');
複製代碼

經常使用配置屬性 1. type:'file' 2. filename string 輸出文件的名字 3. maxLogSize integer日誌文件的最大大小(以字節爲單位)。若是未指定,則不會發生日誌滾動。 4. backups日誌滾動期間要保留的舊日誌文件數默認爲5 5. layout 默認是basic layout 6. keepFileExt boolean 默認爲false 滾動日誌文件時保留文件擴展名(file.log變爲file.1.log而不是file.log.1) 7. compress 對滾動的日誌文件進行壓縮

dateFile

dateFile 日誌的滾動將根據配置的時間格式進行滾動而不是文件大小

例子

log4js.configure({
  appenders: {
    everything: { type: 'dateFile', filename: 'all-the-logs.log' }
  },
  categories: {
    default: { appenders: [ 'everything' ], level: 'debug' }
  }
});
複製代碼

經常使用配置屬性

1. type:'dateFile'
2. filename string 輸出文件的名字
3. pattern(默認爲.yyyy-MM-dd) - 用於肯定什麼時候滾動日誌的模式。
4. layout 默認是basic layout
5. daysToKeep integer(默認爲0) - 若是此值大於零,則在日誌滾動期間將刪除早於該天數的文件。
6. keepFileExt (默認爲false) - 在滾動日誌文件時保留文件擴展名(file.log變爲file.2017-05-30.log而不是file.log.2017-05-30
7. compress 對滾動的日誌文件進行壓縮
複製代碼

categories

categories 也是一個map類型的數據,key是 category 的名字是一個字符串,value 是一個對象。 value 的經常使用屬性

  1. level 定義打印日誌的級別
  2. appenders 定義打印的appender

getLogger([category]) 方法

getLogger 方法返回的是一個logger 對象,logger對象用來打印各個級別的日誌。 getlogger 方法有一個可選參數category的名字,不寫的狀況會使用 categories 中default 定義的規則進行打印,填寫以後會根據對應的 category定義的規則進行打印日誌。

參考文檔 api

相關文章
相關標籤/搜索