使用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 相关文章推荐
14款NodeJS Web框架推荐
Jul 11 NodeJs
Nodejs Post请求报socket hang up错误的解决办法
Sep 25 NodeJs
使用nodejs下载风景壁纸
Feb 05 NodeJs
nodeJS实现简单网页爬虫功能的实例(分享)
Jun 08 NodeJs
Nodejs 和Session 原理及实战技巧小结
Aug 25 NodeJs
详解Nodejs 通过 fs.createWriteStream 保存文件
Oct 10 NodeJs
nodejs爬虫初试superagent和cheerio
Mar 05 NodeJs
nodejs中密码加密处理操作详解
Mar 20 NodeJs
深入理解nodejs搭建静态服务器(实现命令行)
Feb 05 NodeJs
nodejs开发一个最简单的web服务器实例讲解
Jan 02 NodeJs
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
Dec 14 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
php jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
php调用C代码的实现方法
2014/03/11 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
PHP Redis扩展无法加载的问题解决方法
2019/08/22 PHP
Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解
2020/04/06 PHP
JavaScript面向对象(极简主义法minimalist approach)
2012/07/17 Javascript
js每隔5分钟执行一次ajax请求的实现方法
2013/11/27 Javascript
JS实现倒计时和文字滚动的效果实例
2014/10/29 Javascript
javascript关于运动的各种问题经典总结
2015/04/27 Javascript
JavaScript每天定时更换皮肤样式的方法
2015/07/01 Javascript
jQuery与JavaScript节点创建方法的对比
2016/11/18 Javascript
纯JS单页面赛车游戏制作代码分享
2017/03/03 Javascript
jquery仿微信聊天界面
2017/05/06 jQuery
微信小程序实现通过双向滑动缩放图片大小的方法
2018/12/30 Javascript
Vue路由守卫及页面登录权限控制的设置方法(两种)
2020/03/31 Javascript
Vue自定义多选组件使用详解
2020/09/08 Javascript
ant design vue导航菜单与路由配置操作
2020/10/28 Javascript
vue+iview分页组件的封装
2020/11/17 Vue.js
python使用fileinput模块实现逐行读取文件的方法
2015/04/29 Python
Python实现栈的方法
2015/05/26 Python
基于python中pygame模块的Linux下安装过程(详解)
2017/11/09 Python
简单实现python进度条脚本
2017/12/18 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
Python集合操作方法详解
2020/02/09 Python
使用Puppeteer爬取微信文章的实现
2020/02/11 Python
python实现翻译word表格小程序
2020/02/27 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
韩都衣舍天猫官方旗舰店:天猫女装销售总冠军
2017/10/10 全球购物
钳工实习自我鉴定
2013/09/19 职场文书
大学校园活动策划书
2014/02/04 职场文书
好听的队名和口号
2014/06/09 职场文书
社区综治宣传月活动总结
2014/07/02 职场文书
小学语文教学随笔
2015/08/14 职场文书
《所见》教学反思
2016/02/23 职场文书
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript
Vue实现动态查询规则生成组件
2021/05/27 Vue.js