使用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实现的一个简单udp广播服务器、客户端
Sep 25 NodeJs
详谈nodejs异步编程
Dec 04 NodeJs
nodejs实现获取某宝商品分类
May 28 NodeJs
学习 NodeJS 第八天:Socket 通讯实例
Dec 21 NodeJs
nodejs学习笔记之路由
Mar 27 NodeJs
详解nodejs微信公众号开发——3.封装消息响应模块
Apr 10 NodeJs
详解HTTPS 的原理和 NodeJS 的实现
Jul 04 NodeJs
nodejs 图解express+supervisor+ejs的用法(推荐)
Sep 08 NodeJs
详解Nodejs内存治理
May 13 NodeJs
nodejs中express入门和基础知识点学习
Sep 13 NodeJs
NodeJS使用Range请求实现下载功能的方法示例
Oct 12 NodeJs
nodejs基础之多进程实例详解
Dec 27 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
PHP5 面向对象程序设计
2008/02/13 PHP
php 图片上添加透明度渐变的效果
2009/06/29 PHP
php mysql Errcode: 28 终极解决方法
2009/07/01 PHP
PHP对象转换为数组函数(递归方法)
2012/02/04 PHP
mysql数据库差异比较的PHP代码
2012/02/05 PHP
php安全之直接用$获取值而不$_GET 字符转义
2012/06/03 PHP
深入PHP异步执行的详解
2013/06/03 PHP
php一行代码获取文件后缀名实例分析
2014/11/12 PHP
php  单例模式详细介绍及实现源码
2016/11/05 PHP
改进:论坛UBB代码自动插入方式
2006/12/22 Javascript
一段效率很高的for循环语句使用方法
2007/08/13 Javascript
jQuery下通过replace字符串替换实现大小图片切换
2012/05/22 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
2013/12/10 Javascript
node.js中的fs.fsync方法使用说明
2014/12/15 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
Vue.js快速入门教程
2016/09/07 Javascript
JS 动态判断PC和手机浏览器实现代码
2016/09/21 Javascript
Centos6.8下Node.js安装教程
2017/05/12 Javascript
js 简易版滚动条实例(适用于移动端H5开发)
2017/06/26 Javascript
vue中axios解决跨域问题和拦截器的使用方法
2018/03/07 Javascript
使用javascript做在线算法编程
2018/05/25 Javascript
Vue 后台管理类项目兼容IE9+的方法示例
2019/02/20 Javascript
解决layui的radio属性或别的属性没显示出来的问题
2019/09/26 Javascript
使用pandas的DataFrame的plot方法绘制图像的实例
2018/05/24 Python
Python hashlib模块用法实例分析
2018/06/12 Python
Django中celery执行任务结果的保存方法
2019/07/12 Python
HTML5+CSS3应用详解
2014/02/24 HTML / CSS
HTML5中的autofocus(自动聚焦)属性介绍
2014/04/23 HTML / CSS
使用canvas压缩图片上传的方法示例
2020/02/07 HTML / CSS
日本最大化妆品和美容产品的综合口碑网站:cosme shopping
2019/08/28 全球购物
一套C#面试题
2013/10/09 面试题
优秀通讯员事迹材料
2014/01/28 职场文书
绿化工程实施方案
2014/03/17 职场文书
电子商务专业毕业生求职信
2014/06/12 职场文书
观后感格式
2015/06/19 职场文书
SQL Server数据定义——模式与基本表操作
2021/04/05 SQL Server