使用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读取memcache示例分享
Jan 02 NodeJs
Ubuntu中搭建Nodejs开发环境过程分享
Jun 01 NodeJs
使用forever管理nodejs应用教程
Jun 03 NodeJs
Nodejs sublime text 3安装与配置
Jun 19 NodeJs
NodeJS使用jQuery选择器操作DOM
Feb 13 NodeJs
基于html5和nodejs相结合实现websocket即使通讯
Nov 19 NodeJs
nodejs初步体验篇
Nov 23 NodeJs
详解nodeJS中读写文件方法的区别
Mar 06 NodeJs
nodejs使用express创建一个简单web应用
Mar 31 NodeJs
详解nodejs通过响应回写的方式渲染页面资源
Apr 07 NodeJs
Nodejs技巧之Exceljs表格操作用法示例
Nov 06 NodeJs
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
May 30 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
摘自织梦CMS的HTTP文件下载类
2015/08/08 PHP
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
PHP实现cookie跨域session共享的方法分析
2019/08/23 PHP
Laravel-添加后台模板AdminLte的实现方法
2019/10/08 PHP
cnblogs TagCloud基于jquery的实现代码
2010/06/11 Javascript
禁止空格提交表单的js代码
2013/11/17 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
2014/07/09 Javascript
原生js制作简单的数字键盘
2015/04/24 Javascript
浅谈Javascript中substr和substring的区别
2015/09/30 Javascript
解决JavaScript数字精度丢失问题的方法
2015/12/03 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
详解如何提高 webpack 构建 Vue 项目的速度
2017/07/03 Javascript
JS解析后台返回的JSON格式数据实例
2018/08/06 Javascript
jQuery访问json文件中数据的方法示例
2019/01/28 jQuery
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
javascript实现贪吃蛇小游戏
2020/07/28 Javascript
JS删除对象中某一属性案例详解
2020/09/08 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
2020/10/23 Javascript
分析Python的Django框架的运行方式及处理流程
2015/04/08 Python
Python随机生成数据后插入到PostgreSQL
2016/07/28 Python
基于Python函数的作用域规则和闭包(详解)
2017/11/29 Python
Python实现的HMacMD5加密算法示例
2018/04/03 Python
python多线程之事件Event的使用详解
2018/04/27 Python
对python append 与浅拷贝的实例讲解
2018/05/04 Python
Python对CSV、Excel、txt、dat文件的处理
2018/09/18 Python
对Python之gzip文件读写的方法详解
2019/02/08 Python
如何更优雅地写python代码
2019/07/02 Python
python 线程的五个状态
2020/09/22 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
2020/10/15 Python
医院工作检讨书范文
2014/02/10 职场文书
《兰亭集序》教学反思
2014/02/11 职场文书
写给父母的感谢信
2015/01/22 职场文书
订货会主持词
2015/07/01 职场文书
Python import模块的缓存问题解决方案
2021/06/02 Python
Win11运行育碧游戏总是崩溃怎么办 win11玩育碧游戏出现性能崩溃的解决办法
2022/04/06 数码科技
ubuntu20.04虚拟机无法上网的问题及解决
2022/12/24 Servers