zoukankan      html  css  js  c++  java
  • nodejs简单http日志存储

    nodejs实现简单http日志存储

     1 /*
     2 日志存储:
     3 202.189.63.115 - - [31/Aug/2008:15:42:31 +0800] "GET / HTTP/1.1" 200 1365 "-"
     4   "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1"
     5 */
     6 
     7 let http = require("http"),
     8     fs = require("fs"),
     9     file = "access.log",
    10     retValue = Buffer.from("你好阿"),
    11     date = new Date(),
    12     day = date.getDate(),
    13     month = date.getMonth(),
    14     year = date.getFullYear(),
    15     hours = date.getHours(),
    16     seconds = date.getMinutes(),
    17     milis = date.getSeconds(),
    18     zone = "+8400";
    19 
    20 let server  = http.createServer(function(req,res){
    21 }).listen(8080)
    22 
    23 server.on("request",function(req,res){
    24     function getLog(req,status,size){
    25       let rizhi = "",
    26           ip,
    27           time,
    28           method,
    29           page,
    30           protocol,
    31           statusCode,
    32           userAgent;
    33       ip = req.connection.remoteAddress;
    34       time = `[${day}/${month}/${year}:${hours}:${seconds}:${milis} ${zone}]`;
    35       method = req.method;
    36       page = req.url;
    37       protocol = req.httpVersion;
    38       statusCode = status;
    39       size = size;
    40       userAgent = req.headers["user-agent"];
    41       rizhi = `${ip} - - ${time} "${method} ${page} HTTP${protocol}" ${statusCode} ${size}
    42         "-" "${userAgent}"`;
    43           console.log(rizhi)
    44         return rizhi;
    45     }
    46     function writeLog(f,req,res,status,size,fn){
    47         let rizhi = fn(req,status,size);
    48         fs.writeFileSync(file,rizhi)
    49     }
    50     if(req.method.toLowerCase() === 'get'){
    51       if(req.url === '/app'){
    52           let status = 200;
    53           let size = 20000;
    54           writeLog(file,req,res,status,size,getLog)
    55       }
    56     }
    57 })
    View Code

    效果:

    1 ::1 - - [9/5/2019:13:54:6 -480] "GET /app HTTP1.1" 200 20000
    2         "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
    View Code
  • 相关阅读:
    适用于 Laravel 的内部收单模块
    适用于 Laravel API 的签名看守器
    适用于 Laravel 的百度搜索推送
    适用于Yii2的千万级数据秒分页
    PostMan 代理的一个大坑
    PHP 各种金融利息的计算方法
    软件工程之UML建模课
    Windows 通过 cmd 得到域名的dns
    在windows下,通过git-bash里的ssh,远程登陆虚拟机里的linux
    Java常见缩写
  • 原文地址:https://www.cnblogs.com/lanxiansen/p/10993333.html
Copyright © 2011-2022 走看看