pm2中自带的日志内容是不能满足日常的需求的,因此需要在项目中加上日志管理,这里研究了下log4的使用方法,效果挺好的,想要查看的都可以找到,记录下简单的使用步骤

log4的配合

// config.js

let path = require('path');

// 日志根目录

let baseLogPath = path.resolve(__dirname, '../../../logs');

// 请求日志目录

let reqPath = '/request';

// 请求日志文件名

let reqFileName = 'request';

// 请求日志输出完整路径

let reqLogPath = baseLogPath + reqPath + '/' + reqFileName;

// 响应日志目录

let resPath = '/response';

// 响应日志文件名

let resFileName = 'response';

// 响应日志输出完整路径

let resLogPath = baseLogPath + resPath + '/' + resFileName;

// 错误日志目录

let errPath = '/error';

// 错误日志文件名

let errFileName = 'error';

// 错误日志输出完整路径

let errLogPath = baseLogPath + errPath + '/' + errFileName;

module.exports = {

appenders: {

// 所有的日志

'console': {type: 'console'},

// 请求日志

'reqLogger': {

type: 'dateFile', // 日志类型

filename: reqLogPath, // 输出文件名

pattern: '-yyyy-MM-dd-hh.log', // 后缀

alwaysIncludePattern: true, // 上面两个参数是否合并

encoding: 'utf-8', // 编码格式

maxLogSize: 1000, // 最大存储内容

},

// 响应日志

'resLogger': {

type: 'dateFile',

filename: resLogPath,

pattern: '-yyyy-MM-dd-hh.log',

alwaysIncludePattern: true,

encoding: 'utf-8',

maxLogSize: 1000,

},

// 错误日志

'errLogger': {

type: 'dateFile',

filename: errLogPath,

pattern: '-yyyy-MM-dd-hh.log',

alwaysIncludePattern: true,

encoding: 'utf-8',

maxLogSize: 1000,

}

},

// 分类以及日志等级

categories: {

default: {

appenders: ['console'],

level: 'all'

},

reqLogger: {

appenders: ['reqLogger'],

level: 'info'

},

resLogger: {

appenders: ['resLogger'],

level: 'info'

},

errLogger: {

appenders: ['errLogger'],

level: 'error'

}

},

}

log4的日志封装

这里是把log4封装成一个中间件,在app.js中直接调用就可以了

// 先安装log4js

// log4.js

const log4Config = require('./config')

const log4js = require('log4js')

// 调用配置文件

log4js.configure(log4Config)

class CommonHandle {

constructor(){}

// 格式化请求日志

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

}

// 格式化相应日志

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

}

// 格式化错误日志

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()

}

// 请求日志

static reqLogger(ctx){

log4js.getLogger('reqLogger').info(this.formatReqLog(ctx))

}

// 相应日志

static resLogger(ctx, time){

log4js.getLogger('resLogger').info(this.formatResLog(ctx,time))

}

// 错误日志

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{

// 请求日志

HandleLogger.reqLogger(ctx)

await next()

period = new Date() - startTime

// 响应日志

HandleLogger.resLogger(ctx,period)

}catch(err){

period = new Date() - startTime

// 错误日志

HandleLogger.errorLogger(ctx, err, period)

}

}

}

调用封装好的日志函数

这里直接以中间件的形式调用就可以了

// app.js

const Koa = require('koa')

const app = new Koa()

const LogJS = require('./common/log/log4')

// log4.js引入

app.use(LogJS())

最后部署上线之后就能直接在根目录下的logs文件夹下查看对应的日志内容。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

log4js linux,如何在项目中使用log4.js的方法步骤相关推荐

  1. 项目中组件工厂的注册方法

    项目中组件工厂的注册方法, 步骤繁琐, 备忘一下 注册步骤: 1.创建组件头文件IUserListBtnTipView 组件头文件统一继承自com::IComponent class IUserLis ...

  2. vue ajax highcharts,在vue项目中引入highcharts图表的方法(详解)

    npm进行highchars的导入,导入完成后就可以进行highchars的可视化组件开发了 npm install highcharts --save 1.components目录下新建一个char ...

  3. vue导入swiper_vue项目中导入swiper插件的方法

    这篇文章主要为大家详细介绍了vue项目中导入swiper插件的方法,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 版本选择 swiper是个常用 ...

  4. 在Maven+Spring项目中使用Node.js的Gulp进行前端自动化构建

    摘要: 在Maven+Spring项目中使用Node.js的Gulp进行前端自动化构建 刚开始打算进行前后端分离开发,后来发现在使用JSP或者Freemarker做动态页面时,想发挥这些自动化构建工具 ...

  5. linux下运行python_在Linux命令行终端中使用python的简单方法(推荐)

    Linux终端中的操作均是使用命令行来进行的.因此,对于小白来说,熟记几个基本的命令行和使用方法能够较快的在Linux命令行环境中将python用起来. 打开命令行窗口 打开命令行窗口的快捷键如下: ...

  6. React项目中请求跨域解决方法

    React项目中请求跨域解决方法 今天经理给我了一个React项目地址,让我拉下来并跑起来,拉下来运行起来后,发现所有的请求都失败了,并且都是由于跨域问题导致的.花了点时间,解决了这个问题,在这里记录 ...

  7. Vue项目中利用pdf.js实现pdf内容滑选文字展示与搜索功能

    Vue项目中利用pdf.js实现pdf内容滑选文字展示与搜索功能 需求:在pdf中鼠标滑动选中一段文字,将选中文字展示到input框中(pdf在iframe中) 完成效果: 关于pdf的引用:我是直接 ...

  8. vue 项目中使用three.js实现vr360度全景图片预览

    vue 项目中使用three.js实现vr360度全景图片预览 当前demo使用的three.js为0.115.0版本 项目中安装three npm install three 安装完成再组件如下导入 ...

  9. 在ts项目中接入live2d-widget.js , 在网页中展示二次元老婆

    原文链接: 在ts项目中接入live2d-widget.js , 在网页中展示二次元老婆 上一篇: tailwindcss 简单场景和官方案例 下一篇: git Submodule 将别人的模型文件通 ...

最新文章

  1. 用C语言解“12-24小时制”题
  2. c语言直接插入排序步骤,经典排序之直接插入排序(C语言)
  3. 解决java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
  4. boost::hana::insert_range用法的测试程序
  5. python迷宫起点终点所有路径_通向终点的路不止一条!python迷宫。
  6. Assembly.CreateInstance()与Activator.CreateInstanc
  7. mysql集群系统_轻松构建Mysql高可用集群系统
  8. ASM1053E ASM1153E对比
  9. C++11的右值引用、移动语义(std::move)和完美转发(std::forward)详解
  10. 从《长安十二时辰》看车联网
  11. 什么是图片的DPI?如何修改图片DPI值?
  12. 机房管理系列之电话交换机
  13. java魔剑天使_大天使之剑大神教你打造牛逼魔剑士
  14. ElasticStack搭建Java日志收集分析,并将其构建docker镜像-学习笔记
  15. 嵌入式实践教程--i.MX8M family Secure Boot HABv4签名实战
  16. vasp测试计算机,vasp-test测试例子
  17. PKCS的 15 个标准
  18. 嵌入式安防监控项目——前期知识复习
  19. Python递归函数实现斐波那契数列
  20. 擦亮双眼,走出精明网贷投资的第一步

热门文章

  1. 云炬WEB开发笔记2-7 代理神器CharlesFiddler
  2. 记计算机三级网络技术考试经历(附题库)
  3. lollipods耳机蓝牙连接方法
  4. 安装wrf模式的第一天
  5. 3DSlicer23:Module-Create Loadable
  6. VTK修炼之道8_三维场景基本要素:相机
  7. 使用TWebBrowser组件保存网页为html和mht文件 收藏
  8. eclipse安装SVN插件报错Unable to connect
  9. PC 机 UART(NS8250)详解
  10. 进入保护模式(一)——《x86汇编语言:从实模式到保护模式》读书笔记12