log4js linux,如何在项目中使用log4.js的方法步骤
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.创建组件头文件IUserListBtnTipView 组件头文件统一继承自com::IComponent class IUserLis ...
- vue ajax highcharts,在vue项目中引入highcharts图表的方法(详解)
npm进行highchars的导入,导入完成后就可以进行highchars的可视化组件开发了 npm install highcharts --save 1.components目录下新建一个char ...
- vue导入swiper_vue项目中导入swiper插件的方法
这篇文章主要为大家详细介绍了vue项目中导入swiper插件的方法,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 版本选择 swiper是个常用 ...
- 在Maven+Spring项目中使用Node.js的Gulp进行前端自动化构建
摘要: 在Maven+Spring项目中使用Node.js的Gulp进行前端自动化构建 刚开始打算进行前后端分离开发,后来发现在使用JSP或者Freemarker做动态页面时,想发挥这些自动化构建工具 ...
- linux下运行python_在Linux命令行终端中使用python的简单方法(推荐)
Linux终端中的操作均是使用命令行来进行的.因此,对于小白来说,熟记几个基本的命令行和使用方法能够较快的在Linux命令行环境中将python用起来. 打开命令行窗口 打开命令行窗口的快捷键如下: ...
- React项目中请求跨域解决方法
React项目中请求跨域解决方法 今天经理给我了一个React项目地址,让我拉下来并跑起来,拉下来运行起来后,发现所有的请求都失败了,并且都是由于跨域问题导致的.花了点时间,解决了这个问题,在这里记录 ...
- Vue项目中利用pdf.js实现pdf内容滑选文字展示与搜索功能
Vue项目中利用pdf.js实现pdf内容滑选文字展示与搜索功能 需求:在pdf中鼠标滑动选中一段文字,将选中文字展示到input框中(pdf在iframe中) 完成效果: 关于pdf的引用:我是直接 ...
- vue 项目中使用three.js实现vr360度全景图片预览
vue 项目中使用three.js实现vr360度全景图片预览 当前demo使用的three.js为0.115.0版本 项目中安装three npm install three 安装完成再组件如下导入 ...
- 在ts项目中接入live2d-widget.js , 在网页中展示二次元老婆
原文链接: 在ts项目中接入live2d-widget.js , 在网页中展示二次元老婆 上一篇: tailwindcss 简单场景和官方案例 下一篇: git Submodule 将别人的模型文件通 ...
最新文章
- 用C语言解“12-24小时制”题
- c语言直接插入排序步骤,经典排序之直接插入排序(C语言)
- 解决java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
- boost::hana::insert_range用法的测试程序
- python迷宫起点终点所有路径_通向终点的路不止一条!python迷宫。
- Assembly.CreateInstance()与Activator.CreateInstanc
- mysql集群系统_轻松构建Mysql高可用集群系统
- ASM1053E ASM1153E对比
- C++11的右值引用、移动语义(std::move)和完美转发(std::forward)详解
- 从《长安十二时辰》看车联网
- 什么是图片的DPI?如何修改图片DPI值?
- 机房管理系列之电话交换机
- java魔剑天使_大天使之剑大神教你打造牛逼魔剑士
- ElasticStack搭建Java日志收集分析,并将其构建docker镜像-学习笔记
- 嵌入式实践教程--i.MX8M family Secure Boot HABv4签名实战
- vasp测试计算机,vasp-test测试例子
- PKCS的 15 个标准
- 嵌入式安防监控项目——前期知识复习
- Python递归函数实现斐波那契数列
- 擦亮双眼,走出精明网贷投资的第一步