express+log4js+mongoose+mongoDB完成一個本身的後臺篇-----express配置log4js篇

1、安裝node.js

    安裝node.js 這裏就很少說 點擊 http://nodejs.cn/ 下載安裝。javascript

2、初始化一個express項目

  1.     全局安裝express 
    npm install -g express

     

  2.     在電腦建立一個文件夾,並在文件中打開命令行,輸入
    npm install // 或者是用cnpm install 有使用yarn的直接 運行yarn
     
  3.     項目中須要使用到log4js來輸出日誌, 安裝log4js
    npm install log4js -D // 建議使用cnpm install log4js -D 或者使用 yarn add log4js
     
  4.    在項目的根目錄建立一個log的文件夾,在文件夾中建立一個index.js文件 與 一個logs文件夾
       index.js文件夾是配置log4js的代碼,  logs文件夾用來存儲 ,  記錄錯誤信息日誌的文件(*.log)
  5.    配置log4js  
      直接上代碼:
  6. const log4js = require('log4js');
    log4js.configure({
      appenders: {                     // 從log4js 2.0版本之後 這裏從一個array變爲了json形式。
        dateFileLog: {                 // 定義存儲爲文件形式日誌類型的名稱(名稱可隨意起)
          type: 'dateFile',
          filename: "./log/logs/logs", // 項目根目錄開始
          pattern: "_yyyy-MM-dd_error.log", // 存儲的文件名稱爲 logs_yyyy-MM-dd_error.log(當天的日期)
          alwaysIncludePattern: true,     //文件名是否始終包含佔位符
          absolute: false               //filename是否絕對路
        },
        logConLog: {                    // 定義在控制檯輸出的日誌類型的名稱
          type: 'console'
        }
      },
      categories: {                     // 這裏面的配置是什麼意思我也沒仔細看過文檔
        default: {
          appenders: ['dateFileLog'],
          level: 'ALL'
        },
        logConLog: {
          appenders: ['logConLog'],
          level: 'ALL'
        }
      }
    });
    const dateFileLog = log4js.getLogger('dateFileLog'); // 能夠理解爲實例化一個日誌輸出對象吧
    const logConLogs = log4js.getLogger('logConLog');    // 能夠理解爲實例化一個日誌輸出對象吧
    exports.logger = dateFileLog;  // 對外開發接口 在文件中輸出
    exports.logs = logConLogs;     // 對外開發接口 在控制檯輸出
    exports.use = function (app) { // 對外開發接口 這裏在app.js中調用, 接管express在控制檯的輸出
      app.use(log4js.connectLogger(logConLogs, { 
        level: 'debug', // 他的等級我默認是DEBUG 
        format: ':method :url'
      }));
    };

    log4js在項目中的使用 java

    /* 關於log4js的使用 */
    
    /* 能夠在build文件夾下的www.js文件中實驗log4js */
    
    /* 在你須要打印日誌的文件中引入log文件夾下的index.js */
    
    // 這裏是引用時, 文件下有文件名稱爲index.js的時候 路徑直接寫到文件夾就能夠, node會本身去尋找下面的index.js中的內容
    const log = require('./log'); 
    const logs = log.logs; // logs是在控制檯輸出信息
    const logger = log.logger // logger是在文件中輸出的信息(通常只輸出錯誤信息)
    
    // 引入進來之後再如下函數中
    function onListening() {
      const addr = server.address();
      const bind = typeof addr === 'string'
        ? 'pipe ' + addr
        : 'port ' + addr.port;
      debug('Listening on ' + bind);
      // logs.info('服務已啓動. 端口:' + port);  // 這一句代碼在控制檯輸出使用的是哪一個端口
      /*
       在此處輸入如下代碼
      */
      logs.info('這是描述信息');
      logs.debug('這是debug信息');
      logs.error('這是錯誤信息');
      logs.warn('這是警告信息');
      
      // 能夠在控制檯中看到下面圖片中的日誌
    }
     
     能夠看到每一種方法對應的就是一個顏色, 通常在控制檯輸出調試信息, 都採用debug方法, 如今你能夠在你想要輸出日誌的地方調用logs的各個方法輸出不一樣顏色的日誌了。
  7. log4js 替換 express 自帶日誌
    ​
    /* 在app.js中引入log文件下的index.js  */
    /*這裏是引用時, 文件下有文件名稱爲index.js的時候 路徑直接寫到文件夾就能夠, node會本身去尋找下面的index.js中的內容*/
    const log = require('./log'); 
    const logs = log.logs; // logs是在控制檯輸出信息
    
    // 在 const app = express();這一句後面使用咱們在log/index.js中暴露出來的use()方法
    
    log.use(app) // 把 app 傳進去 這樣它就已經託管了express默認的日誌輸出
    
    // 如今就能夠把express默認的日誌插件屏蔽掉了 屏蔽一下兩行代碼
    
    const logger = require('morgan');
    
    app.use(logger('dev'));
     
    // 尋找到下面代碼中添加一句
    
    app.use(function (err, req, res, next) {
      logs.error(err);  // 添加此句在控制檯輸出詳細的錯誤信息
      // set locals, only providing error in development
      res.locals.message = err.message;
      res.locals.error = req.app.get('env') === 'development' ? err : {};
    
      // render the error page
      res.status(err.status || 500);
      res.render('error');
    });
    
    ​
相關文章
相關標籤/搜索