使用koa-log4管理nodeJs日志笔记的使用方法


Posted in NodeJs onNovember 30, 2018

前言

对于后端程序应用来说,日志是必不可少的,在nodeJs当中并没有自带的日志模块。最近正好使用koa框架来做后端服务,需要对日志进行分割处理,特记录下分享给大家。

一.后端代码目录结构

├── back-end
│ ├── logs 所有产生的日志文件存放在此目录下
│ ├── db.js 使用Sequelize连接数据库
│ ├── logger.js 日志的配置
│ ├── server.js 后端提供的所有接口

二.引用日志模块

log4js-node是一款比较好的在node环境下对于日志处理的模块,由于我的整个项目是基于koa框架,所以我选择了koa-log4模块。

koa-log4在log4js-node的基础上做了一次包装,是koa的一个处理日志的中间件,此模块可以帮助你按照你配置的规则分叉日志消息。

三.日志配置logger.js

koa-log4的配置与log4js-node是一样的。

const path = require('path');
const log4js = require('koa-log4');

log4js.configure({
 appenders: {
  access: {
   type: 'dateFile',
   pattern: '-yyyy-MM-dd.log', //生成文件的规则
   filename: path.join('back-end/logs/', 'access.log') //生成文件名
  },
  application: {
   type: 'dateFile',
   pattern: '-yyyy-MM-dd.log',
   filename: path.join('back-end/logs/', 'application.log')
  },
  out: {
   type: 'console'
  }
 },
 categories: {
  default: { appenders: [ 'out' ], level: 'info' },
  access: { appenders: [ 'access' ], level: 'info' },
  application: { appenders: [ 'application' ], level: 'WARN'}
 }
});

exports.accessLogger = () => log4js.koaLogger(log4js.getLogger('access')); //记录所有访问级别的日志
exports.logger = log4js.getLogger('application'); //记录所有应用级别的日志

四.日志的使用方法

1.访问日志

对于日志的使用,访问级别的,记录用户的所有请求,作为koa的中间件,直接使用便可,如下:

const Koa = require('koa');
const KoaRouter = require('koa-router');
const app = new Koa();
const router = new KoaRouter();
const { logger, accessLogger } = require('./logger');
const router = new KoaRouter();

app.use(accessLogger());

2.应用日志

应用级别的日志,可记录全局状态下的error,也可记录接口请求当中的错误处理。

捕获全局状态下的error

app.on('error', err => {
 logger.error(err);
});

接口请求错误

router.post('/test',async (ctx, next)=>{
 //处理代码
 }catch(e){
  logger.error(e);
  ctx.body = {status:-1, message:e.message};
 }
});

五.自动生成日志

开启node应用对于每一次的请求,都将按日期来生成日志文件,以下是我这几天自动生成的日志文件

使用koa-log4管理nodeJs日志笔记的使用方法

六.日志内容分析

日志文件当中都有详细的记录

使用koa-log4管理nodeJs日志笔记的使用方法

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

NodeJs 相关文章推荐
跟我学Nodejs(三)--- Node.js模块
May 25 NodeJs
基于 Docker 开发 NodeJS 应用
Jul 30 NodeJs
NodeJS仿WebApi路由示例
Feb 28 NodeJs
nodejs搭建本地http服务器教程
Mar 13 NodeJs
初识NodeJS服务端开发入门(Express+MySQL)
Apr 07 NodeJs
详解nodeJS之二进制buffer对象
Jun 03 NodeJs
NodeJS链接MySql数据库的操作方法
Jun 27 NodeJs
Mac下通过brew安装指定版本的nodejs教程
May 17 NodeJs
NVM安装nodejs的方法实用步骤
Jan 16 NodeJs
详解nodejs http请求相关总结
Mar 31 NodeJs
通过Nodejs搭建网站简单实现注册登录流程
Jun 14 NodeJs
Nodejs技巧之Exceljs表格操作用法示例
Nov 06 NodeJs
nodejs 使用nodejs-websocket模块实现点对点实时通讯
Nov 28 #NodeJs
NodeJs 文件系统操作模块fs使用方法详解
Nov 26 #NodeJs
详解从NodeJS搭建中间层再谈前后端分离
Nov 13 #NodeJs
手把手教你如何使用nodejs编写cli命令行
Nov 05 #NodeJs
基于nodejs的雪碧图制作工具的示例代码
Nov 05 #NodeJs
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
Nov 01 #NodeJs
nodejs中函数的调用实例详解
Oct 31 #NodeJs
You might like
异世界新番又来了,同样是从零开始,男主的年龄降到5岁
2020/04/09 日漫
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
Laravel重写用户登录简单示例
2016/10/08 PHP
解决Laravel 不能创建 migration 的问题
2019/10/09 PHP
jQuery结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
2011/02/18 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
2014/05/05 Javascript
Javascript获取随机数的实现方法
2016/06/22 Javascript
JavaScript-html标题滚动效果的简单实现
2016/09/08 Javascript
使用BootStrap建立响应式网页——通栏轮播图(carousel)
2016/12/21 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
vue.js之vue-cli脚手架的搭建详解
2017/05/05 Javascript
深入理解AngularJs-scope的脏检查(一)
2017/06/19 Javascript
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
一篇文章让你彻底弄懂JS的事件冒泡和事件捕获
2017/08/14 Javascript
微信小程序的日期选择器的实例详解
2017/09/29 Javascript
老生常谈python函数参数的区别(必看篇)
2017/05/29 Python
python基础练习之几个简单的游戏
2017/11/10 Python
python使用KNN算法识别手写数字
2019/04/25 Python
python判断所输入的任意一个正整数是否为素数的两种方法
2019/06/27 Python
django框架单表操作之增删改实例分析
2019/12/16 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
Python3中的f-Strings增强版字符串格式化方法
2020/03/04 Python
python给list排序的简单方法
2020/12/10 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
2021/01/15 Python
详解CSS3中常用的样式【基本文本和字体样式】
2020/10/20 HTML / CSS
市场营销专业毕业生自荐信
2013/11/02 职场文书
法律专业学生的自我评价
2014/02/07 职场文书
通用自荐信范文
2014/03/14 职场文书
海飞丝的广告词
2014/03/20 职场文书
敬老月活动总结
2014/08/28 职场文书
婚礼证婚人演讲稿
2014/09/13 职场文书
无犯罪记录证明范本
2014/09/15 职场文书
综合测评个人总结
2015/03/03 职场文书
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL
Python使用PyYAML库读写yaml文件的方法
2022/04/06 Python
Vue 打包后相对路径的引用问题
2022/06/05 Vue.js