nodejs实现简单http日志存储

 /*
日志存储:
202.189.63.115 - - [31/Aug/2008:15:42:31 +0800] "GET / HTTP/1.1" 200 1365 "-"
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1"
*/ let http = require("http"),
fs = require("fs"),
file = "access.log",
retValue = Buffer.from("你好阿"),
date = new Date(),
day = date.getDate(),
month = date.getMonth(),
year = date.getFullYear(),
hours = date.getHours(),
seconds = date.getMinutes(),
milis = date.getSeconds(),
zone = "+8400"; let server = http.createServer(function(req,res){
}).listen(8080) server.on("request",function(req,res){
function getLog(req,status,size){
let rizhi = "",
ip,
time,
method,
page,
protocol,
statusCode,
userAgent;
ip = req.connection.remoteAddress;
time = `[${day}/${month}/${year}:${hours}:${seconds}:${milis} ${zone}]`;
method = req.method;
page = req.url;
protocol = req.httpVersion;
statusCode = status;
size = size;
userAgent = req.headers["user-agent"];
rizhi = `${ip} - - ${time} "${method} ${page} HTTP${protocol}" ${statusCode} ${size}
"-" "${userAgent}"`;
console.log(rizhi)
return rizhi;
}
function writeLog(f,req,res,status,size,fn){
let rizhi = fn(req,status,size);
fs.writeFileSync(file,rizhi)
}
if(req.method.toLowerCase() === 'get'){
if(req.url === '/app'){
let status = 200;
let size = 20000;
writeLog(file,req,res,status,size,getLog)
}
}
})

效果:

 ::1 - - [9/5/2019:13:54:6 -480] "GET /app HTTP1.1" 200 20000
"-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"

nodejs简单http日志存储的更多相关文章

  1. 3.2 配置构建Angular应用——简单的笔记存储应用

    本节我们会通过构建一个简单的笔记存储应用(可以载入并修改一组简单的笔记)来学习如何应用Angular的特性.这个应用用到的特性有: 在JSON文件中存储笔记 展示.创建.修改和删除笔记 在笔记中使用M ...

  2. Abp + MongoDb 改造默认的审计日志存储位置

    一.背景 在实际项目的开发当中,使用 Abp Zero 自带的审计日志功能写入效率比较低.其次审计日志数据量中后期十分庞大,不适合与业务数据存放在一起.所以我们可以重新实现 Abp 的 IAuditi ...

  3. linux系统各种日志存储路径和详细介绍

    Linux常见的日志文件详述如下1./var/log/boot.log(自检过程)2./var/log/cron (crontab守护进程crond所派生的子进程的动作)3./var/log/mail ...

  4. 3.2.1 配置构建Angular应用——简单的笔记存储应用——展示功能

    本节我们会通过构建一个简单的笔记存储应用(可以载入并修改一组简单的笔记)来学习如何应用Angular的特性.这个应用用到的特性有: 在JSON文件中存储笔记 展示.创建.修改和删除笔记 在笔记中使用M ...

  5. Spring Boot 2.X(八):Spring AOP 实现简单的日志切面

    AOP 1.什么是 AOP ? AOP 的全称为 Aspect Oriented Programming,译为面向切面编程,是通过预编译方式和运行期动态代理实现核心业务逻辑之外的横切行为的统一维护的一 ...

  6. 我们NetCore下日志存储设计

    日志的分类 首先往大的来说,日志分2种 ①业务日志: 即业务系统需要查看的日志, 常见的比如谁什么时候修改了什么. ②参数日志: 一般是开发人员遇到问题的时候定位用的, 一般不需要再业务系统里展示. ...

  7. 关于拦截器实现日志存储到db的代码调试

    问题是,原来系统有日志操作的代码,但日志最终没有存到数据库. xml中拦截器配置: <mvc:interceptor> <mvc:mapping path="/admin/ ...

  8. setbuffer和freopen做一个简单的日志组件

    目标场景是这样的: 多线程的应用程序要频繁打一些小字节的日志,也不想引用很重的日志库. 设想了一个极其简单的日志组件,main线程中重定向stdout到文件,同时setbuffer设置一个10k的缓冲 ...

  9. Linux下一个简单的日志系统的设计及其C代码实现

    1.概述 在大型软件系统中,为了监测软件运行状况及排查软件故障,一般都会要求软件程序在运行的过程中产生日志文件.在日志文件中存放程序流程中的一些重要信息, 包括:变量名称及其值.消息结构定义.函数返回 ...

随机推荐

  1. headers

    headers: # Windows 10 IE 11.0 headers = {"User-Agent" : "Mozilla/5.0 (Windows NT 10.0 ...

  2. Centos7防火墙添加端口

    添加 firewall-cmd --zone=public --add-port=80/tcp --permanent   (--permanent永久生效,没有此参数重启后失效) 重新载入 fire ...

  3. vue_day05

    目录 vue前后端交互: vue 分离前后端交互: vue前端发送请求: vue请求插件--axios: main.js配置: 前端朝后端请求传参方式: django后端返回数据样式: vue配置El ...

  4. Dockerfile命令整理

    通过Dockerfile只做Docker镜像时,需要用到Dockerfile的命令,收集整理如下,以便后续翻阅参考. FROM 功能为指定基础镜像,并且必须是第一条指令. 如果不以任何镜像为基础,那么 ...

  5. OpenGL ES 入门

    写在前面 记录一下 OpenGL ES Android 开发的入门教程.逻辑性可能不那么强,想到哪写到哪.也可能自己的一些理解有误. 参考资料: LearnOpenGL CN Android官方文档 ...

  6. 在Ubuntu18.04.2LTS上遇到的问题汇总

    在Ubuntu18.04.2LTS上遇到的问题汇总 一.前言   在新版的Ubuntu上在桌面右键没有新建文档的按钮着实让人难以接受,其实只要稍微理解就能明白设计者的良苦用心,因为这样便于扩展性和自定 ...

  7. angular修改端口号port

    报错:Port 4200 is already in use. Use '--port' to specify a different port. 因为4200端口已被使用,请使用“--port”修改 ...

  8. Java连载37-面向对象的封装性

    一.IDE上继续新建工程 1.在src目录下新建软件包:package机制后面再讲,目前先用着 2.给package命名一个名称:com.bjpowernode.java_learning 3.软件包 ...

  9. C#工具类SqlServerHelper,基于System.Data.SqlClient封装

    源码: using System; using System.Collections.Generic; using System.Data; using System.Linq; using Syst ...

  10. .net怎么使用Swagger

    目录导航 一.安装 二.配置 三.调用 四.错误记录 一.安装 新建一个没有身份验证的mvc项目 - SwaggerMvc5Demo,然后添加一个名为Remote(自定义)且包含基础读写(不想手写)的 ...