• Express的日志模块morgan


    morgan 是nodejs的一个日志模块,由 express 团队维护。

    这里通过示例简要介绍morgan模块在express中的应用,大部分示例直接来自于。
    morgan的文档:https://github.com/expressjs/morgan

    1). 用法及参数
    1.首先需要安装morgan模块:

    npm install morgan --save

    2.morgan的API:
    morgan(format, options);
    其中 format 表示日志的格式, morgan预定义了一些日志格式,用常量字符串表示,如’combined’, ‘common’, ‘short’, ‘dev’等;options表示选项,比如将日志输出到终端或者文件,这个参数是可选的。

    format 为’combined’时的日志样例:

    GET / 200 47.332 ms - 5137
    GET /javascripts/jquery-2.1.4.min.js 304 12.931 ms 

    ormat 为’short’时的日志样例:

    GET /home HTTP/1.1 304 - - 3.345 ms

    3.在app.js中添加

    var logger = require('morgan');
    const fs = require('fs');
    const moment = require('moment');
    
    // create a write stream (in append mode)
    
    
    var accessLogStream = fs.createWriteStream(path.join(__dirname, 'access.log'), {
        flags: 'a',  //   在该参数值中可以使用flag属性指定对该文件采取什么操作,默认值为‘r’(如果指定读取的文件不存在,则抛出异常)
        encoding: 'utf8'  //使用encoding属性指定使用何种编码格式来读取该文件
    })
      createWriteStream  //createWriteStream方法创建一个写入数据流对象,该对象的write方法用于写入数据,end方法用于结束写入操作。
    // setup the logger 同时加载输出到终端和文件的morgan对象
    
    
    app.use(logger('dev', {   
        stream: accessLogStream
    }));

    4 日志输出到文件,并按天轮转

    var express = require('express');
    var morgan = require('morgan');
    var fs = require('fs');
    var path =  require('path');
    var fileStreamRotator = require('file-stream-rotator');
    var app = express();
    var logDir = path.join(__dirname, 'logs');
    // ensure log directory exists
    fs.existsSync(logDir) || fs.mkdirSync(logDir);
    // create a rotating write stream
    var accessLogStream = fileStreamRotator.getStream({
        date_format: 'YYYYMMDD',
        filename: path.join(logDir, 'access-%DATE%.log'),
        frequency: 'daily',
        verbose: true
    });
    app.use(morgan('common', {stream: accessLogStream}));
    app.get('/to-rotate-file', function(req, res) {
        res.send('done!');
    });
    app.listen(3000);

    注:参考文献 http://ju.outofmemory.cn/entry/277400

  • 相关阅读:
    使用kindeditor时,取不到值
    .net Eval 绑定截取字符串
    学习GeoServer遇到的问题及答案
    爬虫用开源代理池比较
    jenkins自动化部署gitlab上maven程序
    Notepad++编辑.sh文件
    springboot的jar在linux运行
    python3安装web.py
    linux java -jar
    linux安装nginx
  • 原文地址:https://www.cnblogs.com/yu-hailong/p/8394833.html
Copyright © 2020-2023  润新知