最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

如何在項(xiàng)目中使用log4.js的方法步驟

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 21:53:47
文檔

如何在項(xiàng)目中使用log4.js的方法步驟

如何在項(xiàng)目中使用log4.js的方法步驟:pm2中自帶的日志內(nèi)容是不能滿足日常的需求的,因此需要在項(xiàng)目中加上日志管理,這里研究了下log4的使用方法,效果挺好的,想要查看的都可以找到,記錄下簡(jiǎn)單的使用步驟 log4的配合 // config.js let path = require('path'); // 日志根目
推薦度:
導(dǎo)讀如何在項(xiàng)目中使用log4.js的方法步驟:pm2中自帶的日志內(nèi)容是不能滿足日常的需求的,因此需要在項(xiàng)目中加上日志管理,這里研究了下log4的使用方法,效果挺好的,想要查看的都可以找到,記錄下簡(jiǎn)單的使用步驟 log4的配合 // config.js let path = require('path'); // 日志根目

pm2中自帶的日志內(nèi)容是不能滿足日常的需求的,因此需要在項(xiàng)目中加上日志管理,這里研究了下log4的使用方法,效果挺好的,想要查看的都可以找到,記錄下簡(jiǎn)單的使用步驟

log4的配合

// config.js

let path = require('path');

// 日志根目錄
let baseLogPath = path.resolve(__dirname, '../../../logs');
// 請(qǐng)求日志目錄
let reqPath = '/request';
// 請(qǐng)求日志文件名
let reqFileName = 'request';
// 請(qǐng)求日志
輸出完整路徑 let reqLogPath = baseLogPath + reqPath + '/' + reqFileName; // 響應(yīng)日志目錄 let resPath = '/response'; // 響應(yīng)日志文件名 let resFileName = 'response'; // 響應(yīng)日志輸出完整路徑 let resLogPath = baseLogPath + resPath + '/' + resFileName; // 錯(cuò)誤日志目錄 let errPath = '/error'; // 錯(cuò)誤日志文件名 let errFileName = 'error'; // 錯(cuò)誤日志輸出完整路徑 let errLogPath = baseLogPath + errPath + '/' + errFileName; module.exports = { appenders: { // 所有的日志 'console': {type: 'console'}, // 請(qǐng)求日志 'reqLogger': { type: 'dateFile', // 日志類型 filename: reqLogPath, // 輸出文件名 pattern: '-yyyy-MM-dd-hh.log', // 后綴 alwaysIncludePattern: true, // 上面兩個(gè)參數(shù)是否合并 encoding: 'utf-8', // 編碼格式 maxLogSize: 1000, // 最大存儲(chǔ)內(nèi)容 }, // 響應(yīng)日志 'resLogger': { type: 'dateFile', filename: resLogPath, pattern: '-yyyy-MM-dd-hh.log', alwaysIncludePattern: true, encoding: 'utf-8', maxLogSize: 1000, }, // 錯(cuò)誤日志 'errLogger': { type: 'dateFile', filename: errLogPath, pattern: '-yyyy-MM-dd-hh.log', alwaysIncludePattern: true, encoding: 'utf-8', maxLogSize: 1000, } }, // 分類以及日志等級(jí) categories: { default: { appenders: ['console'], level: 'all' }, reqLogger: { appenders: ['reqLogger'], level: 'info' }, resLogger: { appenders: ['resLogger'], level: 'info' }, errLogger: { appenders: ['errLogger'], level: 'error' } }, }

log4的日志封裝

這里是把log4封裝成一個(gè)中間件,在app.js中直接調(diào)用就可以了

// 先安裝log4js

// log4.js

const log4Config = require('./config')
const log4js = require('log4js')

// 調(diào)用配置文件
log4js.configure(log4Config)


class CommonHandle {
 constructor(){}
 // 格式化請(qǐng)求日志
 static formatReqLog(ctx, time){
 let text = '------------request start------------'
 let method = ctx.method
 text += `request method: ${method} \n request url: ${ctx.originalUrl } \n`

 if(method = 'GET'){
 text += `request data: ${JSON.stringify(ctx.query)} \n`
 }else{
 text += `request data: ${JSON.stringify(ctx.body)} \n`
 }
 text += `ctx all: ${JSON.stringify(ctx)}`
 return text
 }
 // 格式化相應(yīng)日志
 static formatResLog(ctx,time){
 let text = '------------response start------------'
 text += `response result: ${JSON.stringify(ctx.response.body)} \n`

 text += `response all: ${JSON.stringify(ctx)} \n`

 text += `response time: ${time} \n`
 return text
 }
 // 格式化錯(cuò)誤日志
 static formatErrorLog(ctx,error,time){
 let text = '------------error start------------'
 text += this.formatResLog(ctx,time)
 text += `error content: ${JSON.stringify(error)}`

 return text
 }
}

class HandleLogger extends CommonHandle{
 constructor(){
 super()
 }

 // 請(qǐng)求日志
 static reqLogger(ctx){
 log4js.getLogger('reqLogger').info(this.formatReqLog(ctx))
 }

 // 相應(yīng)日志
 static resLogger(ctx, time){
 log4js.getLogger('resLogger').info(this.formatResLog(ctx,time))
 }

 // 錯(cuò)誤日志
 static errorLogger(ctx, error, time){
 log4js.getLogger('errLogger').info(this.formatErrorLog(ctx,error,time))
 }

}





module.exports = (options) => {
 return async (ctx,next) => {
 const startTime = new Date()
 let period;
 try{
 // 請(qǐng)求日志
 HandleLogger.reqLogger(ctx)
 await next()
 period = new Date() - startTime
 // 響應(yīng)日志
 HandleLogger.resLogger(ctx,period)
 }catch(err){
 period = new Date() - startTime
 // 錯(cuò)誤日志
 HandleLogger.errorLogger(ctx, err, period)
 }
 }
}

調(diào)用封裝好的日志函數(shù)

這里直接以中間件的形式調(diào)用就可以了

// app.js

const Koa = require('koa')
const app = new Koa()
const LogJS = require('./common/log/log4')

// log4.js引入
app.use(LogJS())

最后部署上線之后就能直接在根目錄下的logs文件夾下查看對(duì)應(yīng)的日志內(nèi)容。

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

如何在項(xiàng)目中使用log4.js的方法步驟

如何在項(xiàng)目中使用log4.js的方法步驟:pm2中自帶的日志內(nèi)容是不能滿足日常的需求的,因此需要在項(xiàng)目中加上日志管理,這里研究了下log4的使用方法,效果挺好的,想要查看的都可以找到,記錄下簡(jiǎn)單的使用步驟 log4的配合 // config.js let path = require('path'); // 日志根目
推薦度:
標(biāo)簽: 使用 過程 js
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top