log4js 安裝和配置

在 nodeJS 開發中,不能直接使用 console.log 打印相關日誌並 debug。所以,查閱資料後,可以使用 log4js 在終端打印日誌。下面是具體的安裝和使用。

除了直接打印日誌,這個庫還支持這些功能:支持使用不同顏色標記和打印日誌;文件類型的日誌輸出源,並可通過配置支持基於文件大小或日期進行日誌回滾;支持日誌分級和日誌分類;可配置的日誌信息模式。

基本用法

'use strict';
let log4js = require('log4js');
let logger = log4js.getLogger();

logger.debug('this is debug');
logger.info('this is info');
logger.warn('this is warn'); 

運行

node log.js

注意:如果沒有全局安裝 log4js 會報錯,然後執行

sudo npm install log4js -g
# 使用npm install -g 'xxx' 之後仍然報 
# Cannot find module 'xxx' 錯誤,可以通過設置環境變量來解決; 

export NODE_PATH=/usr/local/lib/node_modules/  
echo $NODE_PATH  
# 運行就可以正常執行
# https://blog.csdn.net/wmsjlihuan/article/details/19816389

發現沒有,什麼輸出也沒有?爲什麼呢?
因爲log4js的缺省級別是off,也就是所有的都不會輸出。

指定輸出級別

'use strict';
let log4js = require('log4js');
let logger = log4js.getLogger();
logger.level = 'info';

logger.debug('this is debug');
logger.info('this is info');
logger.warn('this is warn');

再運行:

node log.js
[2019-05-24T07:04:36.167] [INFO] default - this is info
[2019-05-24T07:04:36.169] [WARN] default - this is warn
# 控制檯會顯示 info warn 信息,但是 debug 信息不顯示

這樣info以及以上級別的log都能夠正常輸出了。

如果需要輸出全部信息,把 logger.level = ‘debug’ 即可。下面是全部的等級。

ALL
TRACE
DEBUG
INFO
WARN
ERROR
FATAL
MARK
OFF

設置全局級別

前面例子設置了單個logger的輸出級別,現在設置所有logger的缺省級別。

創建 log 配置文件 logconf.json (日誌類型,日誌級別,輸出源)

{
  "appenders": {
    "consoleout": { "type": "console" }
  },
  "categories": {
    "default": { "appenders": [ "consoleout" ], "level": "debug" }
  }
}

全局加載配置

'use strict';

let config = require('./logconf.json');
let log4js = require('log4js');
log4js.configure(config);

let logger = log4js.getLogger();
logger.debug('this is debug');
logger.info('this is info');
logger.warn('this is warn');

運行

node log.js
[2019-05-24T07:10:10.557] [DEBUG] default - this is debug
[2019-05-24T07:10:10.560] [INFO] default - this is info
[2019-05-24T07:10:10.560] [WARN] default - this is warn

因爲在配置文件裏把level設置成了debug,這樣三個log行都打出來了。

目前支持的日誌

SMTP:以郵件形式發送日誌;
GELF ( Graylog Extended Log Format,graylog擴展日誌格式),能夠規避傳統的系統級日誌的未壓縮、1024字節長度限制、無數據類型等缺點;它只依賴於node的udp模塊支持,可以通過udp協議發送日誌到兼容gelf的服務器;
File 將日誌輸出到指定文件;
console 將日誌打印到控制檯;
redis 將日誌事件存儲到redis數據庫;

綜合使用

let log4js = require('log4js');

log4js.configure({
  appenders: {test: {
    type: 'console',
  }},
  categories: { default: { appenders: ['test'], level: 'error' } }
});

let logger = log4js.getLogger('test');
logger.level = 'warn';

logger.debug('debug...');
logger.info('info...');
logger.warn('warn...');
logger.error('error...');
console.log('start...');

參考文獻

官網上說的很詳細

https://www.npmjs.com/package/log4js

https://github.com/log4js-node/log4js-node

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章