文档章节

express+log4js+mongoose+mongoDB完成一个自己的后台篇-----express配置log4js篇

Cander0815
 Cander0815
发布于 2017/11/07 16:36
字数 1141
阅读 163
收藏 1

一、安装node.js

    安装node.js 这里就不多说 点击 http://nodejs.cn/ 下载安装。

二、初始化一个express项目

  1.     全局安装express 
    npm install -g express

     

  2.     在电脑创建一个文件夹,并在文件中打开命令行,输入
    npm install // 或者是用cnpm install 有使用yarn的直接 运行yarn
     
  3.     项目中需要使用到log4js来输出日志, 安装log4js
    npm install log4js -D // 建议使用cnpm install log4js -D 或者使用 yarn add log4js
     
  4.    在项目的根目录创建一个log的文件夹,在文件夹中创建一个index.js文件 与 一个logs文件夹
       index.js文件夹是配置log4js的代码,  logs文件夹用来存储 ,  记录错误信息日志的文件(*.log)
  5.    配置log4js  
      直接上代码:
  6. const log4js = require('log4js');
    log4js.configure({
      appenders: {                     // 从log4js 2.0版本以后 这里从一个array变为了json形式。
        dateFileLog: {                 // 定义存储为文件形式日志类型的名称(名称可随意起)
          type: 'dateFile',
          filename: "./log/logs/logs", // 项目根目录开始
          pattern: "_yyyy-MM-dd_error.log", // 存储的文件名称为 logs_yyyy-MM-dd_error.log(当天的日期)
          alwaysIncludePattern: true,     //文件名是否始终包含占位符
          absolute: false               //filename是否绝对路
        },
        logConLog: {                    // 定义在控制台输出的日志类型的名称
          type: 'console'
        }
      },
      categories: {                     // 这里面的配置是什么意思我也没仔细看过文档
        default: {
          appenders: ['dateFileLog'],
          level: 'ALL'
        },
        logConLog: {
          appenders: ['logConLog'],
          level: 'ALL'
        }
      }
    });
    const dateFileLog = log4js.getLogger('dateFileLog'); // 可以理解为实例化一个日志输出对象吧
    const logConLogs = log4js.getLogger('logConLog');    // 可以理解为实例化一个日志输出对象吧
    exports.logger = dateFileLog;  // 对外开发接口 在文件中输出
    exports.logs = logConLogs;     // 对外开发接口 在控制台输出
    exports.use = function (app) { // 对外开发接口 这里在app.js中调用, 接管express在控制台的输出
      app.use(log4js.connectLogger(logConLogs, { 
        level: 'debug', // 他的等级我默认是DEBUG 
        format: ':method :url'
      }));
    };

    log4js在项目中的使用 

    /* 关于log4js的使用 */
    
    /* 可以在build文件夹下的www.js文件中实验log4js */
    
    /* 在你需要打印日志的文件中引入log文件夹下的index.js */
    
    // 这里是引用时, 文件下有文件名称为index.js的时候 路径直接写到文件夹就可以, node会自己去寻找下面的index.js中的内容
    const log = require('./log'); 
    const logs = log.logs; // logs是在控制台输出信息
    const logger = log.logger // logger是在文件中输出的信息(一般只输出错误信息)
    
    // 引入进来以后再以下函数中
    function onListening() {
      const addr = server.address();
      const bind = typeof addr === 'string'
        ? 'pipe ' + addr
        : 'port ' + addr.port;
      debug('Listening on ' + bind);
      // logs.info('服务已启动. 端口:' + port);  // 这一句代码在控制台输出使用的是哪个端口
      /*
       在此处输入以下代码
      */
      logs.info('这是描述信息');
      logs.debug('这是debug信息');
      logs.error('这是错误信息');
      logs.warn('这是警告信息');
      
      // 可以在控制台中看到下面图片中的日志
    }
     
     可以看到每一种方法对应的就是一个颜色, 一般在控制台输出调试信息, 都采用debug方法, 现在你可以在你想要输出日志的地方调用logs的各个方法输出不同颜色的日志了。
  7. log4js 替换 express 自带日志
    ​
    /* 在app.js中引入log文件下的index.js  */
    /*这里是引用时, 文件下有文件名称为index.js的时候 路径直接写到文件夹就可以, node会自己去寻找下面的index.js中的内容*/
    const log = require('./log'); 
    const logs = log.logs; // logs是在控制台输出信息
    
    // 在 const app = express();这一句后面使用我们在log/index.js中暴露出来的use()方法
    
    log.use(app) // 把 app 传进去 这样它就已经托管了express默认的日志输出
    
    // 现在就可以把express默认的日志插件屏蔽掉了 屏蔽一下两行代码
    
    const logger = require('morgan');
    
    app.use(logger('dev'));
     
    // 寻找到下面代码中添加一句
    
    app.use(function (err, req, res, next) {
      logs.error(err);  // 添加此句在控制台输出详细的错误信息
      // set locals, only providing error in development
      res.locals.message = err.message;
      res.locals.error = req.app.get('env') === 'development' ? err : {};
    
      // render the error page
      res.status(err.status || 500);
      res.render('error');
    });
    
    ​

     

 

© 著作权归作者所有

Cander0815

Cander0815

粉丝 3
博文 17
码字总数 9752
作品 0
深圳
前端工程师
私信 提问
nodejs开发——log4js学习

版权声明:本文为博主原创文章,欢迎分享到其它技术社区,分享请标明出处: https://blog.csdn.net/CHENYUFENG1991/article/details/54809927 在我们开发项目时,日志是必不可少的一部分,有...

乞力马扎罗的雪CYF
2017/02/01
0
0
玩转 Nodejs 日志管理 log4js

前言 日志对任何的应用来说都是至关重要的。在Nodejs中使用express框架并没有自带的日志模块,我们可以选择log4js来完成日志记录的功能。 如果用过JAVA中log4j的同学,肯定对日志并不陌生,学...

红薯
2014/05/13
5.7K
3
从零开始使用express搭建博客系统(一):前期环境构建与代码初始化

node 这里会有三篇文章,教你从零开始使用express搭建博客系统,每篇文章都很简单,希望大家看完文章能大致入门express。 一,安装node 直接在node官网进行下载,下载下来进行傻瓜式安装,安...

Darrell
2018/02/10
0
0
NodeJS -- log4js 2.x 配置

今天新开一个项目,把原来的log4js 1.x 升级到2.x版本后发现原来的log4js配置不再能使用,查了下官方文档,顺便也记录下 log4js 2.x的配置。 安装 项目安装: 配置 新建一个 log4js.json文件...

米阳MeYoung
2018/05/31
0
0
记一次基于react、cra2、typescript的pwa项目由开发到部署(三)

该篇文章为本系列最后一篇文章,因为最近楼主忙于毕设,所以这也是一篇被鸽了很久很久的文章。该文章主要讲的是该项目的部署部分,包括: 如何将该项目部署到nginx服务器上。 为它配置证书,...

🍼holyZhengs
2018/12/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Python登录豆瓣并爬取影评

上一篇我们讲过Cookie相关的知识,了解到Cookie是为了交互式web而诞生的,它主要用于以下三个方面: 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息) 个性化设置(如...

猪哥66
20分钟前
1
0
常见排序的指针实现【C++ Code】

本来是想加上传cmp函数的,后来也懒得写了 然后基数排序虽然写的是模板类,但也只是支持整数了… #include <cstdio> #include <cstring> #include <algorithm> #include <typeinfo> using name......

shzwork
今天
3
0
OSChina 周一乱弹 —— 带这么多钱,你要泡我吗

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :白给?#今日歌曲推荐# 分享Lana Del Rey的单曲《Yayo》: 《Yayo》- Lana Del Rey 手机党少年们想听歌,请使劲儿戳(这里) @红薯...

小小编辑
今天
1K
15
搭建tftp服务

前言: 最近整理一些以前的学习笔记。 过去都是存储在本地,此次传到网络留待备用。 TFTP服务: TFTP:Trivial File Transfer Protocol 不重要文件传输协议 主要用来传送小文件,不支持认证和...

迷失De挣扎
今天
4
0
rest 的理解

rest:表现层状态转移。 什么是restful协议?https://en.wikipedia.org/wiki/Representational_state_transfer 使用restful的好处。 Rest是一种体系结构样式,他定义了一组用于创建web服务的...

xiaoxiao_go
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部