nodejs实现日志功能

node 使用 pm2 日志管理及使用 pm2-logrotate 进行日志分割 node 使用 pm2 日志管理及使用 pm2-logrotate 进行日志分割详细教程!!! 阅读详情

目录结构

在这里插入图片描述

环境搭建

安装nodemon

npm i nodemon cross-env --save-dev

// package.json
"dev": "cross-env NODE_ENV=dev --inspect=9229 nodemon ./index.js"

创建http服务

const http = require('http')

const server = http.createServer((req, res) => {
  res.end('hello node')
})

server.listen(3000)

执行脚本npm run dev,看到下图说明服务启动成功

在这里插入图片描述

写日志

选择stream方式写文件的原因

  • 内存效率: 无需加载大量的数据到内存中即可进行处理。
  • 时间效率: 当获得数据之后即可立即开始处理数据,这样所需的时间更少,而不必等到整个数据有效负载可用才开始。

log.js

const fs = require('fs')
const path = require('path')

// 写日志
function writeLog(writeStream, log) {
  writeStream.write(log + '\n')
}

function createWriteStream(fileName) {
  const fullWriteFilePath = path.resolve(__dirname, '../', 'log', fileName)
  console.log(fullWriteFilePath)

  // 创建这个
  const writeStream = fs.createWriteStream(fullWriteFilePath, {
    flags: 'a' //  打开文件进行追加。 如果文件不存在,则创建该文件。
  })
  return writeStream
}

function access(log) {
  const accessWriteStream = createWriteStream('access.log')
  writeLog(accessWriteStream, log)
}

module.exports = {
  access
}

index.js

引入操作日志的方法,进行写日志

const http = require('http')
const { access } = require('./utils/log')

const server = http.createServer((req, res) => {
  access(`${req.method} -- ${req.url} -- ${req.headers['user-agent']} -- ${Date.now()}`)
  res.end('hello node')
})

server.listen(3000)

此时可以看到access.log里边有记录了

分析日志

readline.js

const fs = require('fs')
const path = require('path')
const readline = require('readline')

const fullPathName = path.resolve(__dirname, '../', 'log', 'access.log')

// 创建read stream
const readStream = fs.createReadStream(fullPathName)

// 创建readline对象
const rl = readline.createInterface({
  input: readStream
})

let chromeNum = 0
let sum = 0

rl.on('line', lineData => {
  if(!lineData) {
    return
  }
  sum ++
  if(/Chrome/.test(lineData)) {
    chromeNum ++
  }
})

rl.on('close', () => {
  console.log('chrome占比', chromeNum / sum)
})

总结

流是一种以高效的方式处理读/写文件、网络通信、或任何类型的端到端的信息交换。使用流,则可以逐个片段地读取并处理(而无需全部保存在内存中)。因此日志的读写使用流的方式,避免文件过大时内存负载过大影响性能。

nodejs日志管理 log4js使用详解 一、首先是在项目中安装 log4js npm install log4js --save 注:log4js日志级别,分别为:<权值从小到大> all < trace < debug < info < warn < error < fatal < mark < off 二、基本使用: 1.//-----------同一文件,不同 level 日志输出----------- var log4js = require... 阅读详情

相关推荐

前端领域 Node.js 实现日志记录功能

在前端开发中,日志记录是一项至关重要的功能。它可以帮助开发者在开发和生产环境中快速定位问题、监控系统状态、分析用户行为等。本文章的目的是深入探讨如何使用 Node.js 在前端领域实现日志记录功能。范围涵盖了从基础的日志记录概念到实际项目中的应用,包括日志的生成、存储、管理以及相关工具和资源的介绍。本文将按照以下结构进行组织:首先介绍核心概念与联系,让读者对日志记录有一个基本的认识;接着讲解核心算法原理和具体操作步骤,通过 Python 代码示例帮助读者理解;

小白菜的博客 991

Nodejs log方案(log4js)

测试API发现一些问题,为了保证不输出太多的log,server正常处理时,并没有记录相关信息。 发现需要一种支持日志级别的log系统来完成log,而不是简单的使用node自带的log函数。经过查阅资料选择了log4js这种方案。 官方文档:https://log4js-node.github.io/log4js-node 参考链接:https://www.cnblogs.com/atp-s...

Andy Tools 1万+

P450酶催化循环的Amber-Gromacs混合模拟实战:从血红素加氧到产物释放

本文详细介绍了针对P450酶完整催化循环的Amber-Gromacs混合模拟实战策略。通过Amber为关键氧合血红素中间体(CPDI)构建精确力场,再利用Gromacs的高效GPU加速进行长时间尺度动力学模拟,完整覆盖从底物结合到产物释放的催化过程,为研究酶催化机制提供了强大的计算工具。

weixin_29201859的博客 315

Node输出日志的正确姿势

定义了两个传输器,一个将日志消息记录到控制台,另一个将错误日志消息记录到名为 error.log 的文件中。我们也可以自定义格式化器,根据自己的需求来记录日志数据。这样的日志不仅很难知道消息级别或消息记录的日期,而且过滤和排查日志也是一项艰巨的任务。Winston 支持多个日志级别,可以根据日志消息的严重程度选择不同的日志级别来记录。● 可以很容易地取消全部日志记录,或者仅仅取消某个级别以下的日志,而且可以很容易地再次打开日志开关。● 可以很简单的禁止日志记录,因此,将这些日志代码留在程序中的开销很小。

指南针的博客 3175

基于ResNet-50的猫狗分类训练

基于ResNet-50的猫狗分类python训练

weixin_46352497的博客 1004

骁龙X Elite笔记本重装Windows 11 Arm64系统完整指南与避坑手册

UEFI安全启动和Arm64架构是理解现代计算设备系统部署的基础。UEFI取代传统BIOS,提供了更安全的启动环境和模块化固件接口,而Arm64架构则以其高能效特性,在移动和新兴PC领域日益重要。其技术价值在于为设备带来更快的启动速度、更强的安全防护以及更优的功耗表现。在应用场景上,这直接关系到搭载高通骁龙X Elite等Arm处理器的笔记本电脑的系统安装与维护。对于这类设备,重装系统远非插入通用安装盘那么简单,核心挑战在于必须使用专为Arm64编译的Windows镜像,并需提前集成芯片组、网络等硬件的专属

weixin_33428613的博客 490

NodeJs 使用中间件实现日志生成功能

今天我们实现一个记录 nodejs 服务请求日志的功能,大概的功能包括请求拦截,将请求的信息作为日志文件的内容写入到 txt 文件中,然后输出到指定的日志到当天日期目录中,从而实现后续查找用户请求信息的功能,下面的内容有一部分是之前文章中实现过的,需要的可以移步NodeJs 连接本地 mySql 数据库获取数据NodeJs实现对本地 mysql 数据库的增删改查上面有对mysql 数据的链接 本地服务的启动和对数据库的 CURD 基本操作实现。

红岸基地 849

HSmartWindowControl vs HWindowControl:Halcon老鸟教你如何根据项目需求选对控件(附性能对比)

本文深度对比Halcon图像处理中的HSmartWindowControl与HWindowControl控件,从性能、内存占用和交互体验等维度提供选型建议。HSmartWindowControl在硬件加速渲染、智能内存管理方面表现优异,特别适合医疗影像和工业检测等高性能需求场景,而HWindowControl则更适合兼容旧系统和资源受限环境。

weixin_30765505的博客 471

Elastic:使用 Fluentd 及 Elastic Stack 进行应用日志采集

日志记录是任何应用程序中最重要的方面。 每个应用程序都有不同风格的日志记录机制。 但是,设计良好的日志记录机制对于系统管理员和开发人员来说是一个巨大的实用工具。 日志对于调试影响你的服务的原因至关重要。 现在我们知道了在应用程序设计中收集日志的价值,我们将使用 Bunyan 库在 NodeJS 应用程序中实现日志记录。 Bunyan 是一个用于 NodeJS 服务的简单快速的 JSON 日志库。 作为应用程序设计的日志记录还应该考虑诸如记录什么、何时以及记录多少,如何控制日志记录等问题。 例如:你不能仅

Elastic 中国社区官方博客 2591

kemeas算法继续优化——elkan kmeas算法

题记:又是凌晨3点的夜 elkan kmeans算法 在我的上一篇博客《kmeans算法性能改进_kmeans++算法+kmeans++优化算法+距离计算优化》中,在一般kmeans算法的基础上,添加了对于初始条件和距离计算更上的一些优化技巧。这篇博客聊一聊elkan算法,其实也是对于kmeans运行速度的优化算法。主要作用与kmeans的距离计算过程。 原理 假如我们已经知道任意两个样本之间的距离,再假设我们已经知道了样本1与聚类中心1之间的距离,根据三角性两边之和大于第三边,c+d>a,所以如果

铁血军的小博客 7065

Verilog的综合指令

Synopsys综合指令

烟花一时的博客 5447

基于nodeJS实现的几个功能

上传头像1.使用文件上传中间件multernpm install multer --save2.jade界面表单.form-group label File input input#file(type='file', name='file') p#result img#img(src='') button#upload.btn.btn-default 提交3.ajax获取发起请求(

onpwerb的博客 1981

nodejs做中间层_我们为什么需要Node中间层

首先跳出前端要看清node中间层在整个服务承担什么角色,首先我们要跳出前端的视野,把自己视角提示一个level —— 去鸟瞰整个项目。互联网时代其实就是信息时代,我们都是在利用数据交换,来产生价值。一个最简单的数据流,前端-->后端-->数据库。在这个原始的流程之间,我们有很多事情可以做。来看和前端最近这条线,前端-->后端。代理缓存限流日志监控鉴权路由灰度...上面列出的是一些...

weixin_39820173的博客 422

SAP自动化-ME51N批量创建采购申请

2、需要管理员授权RZ11脚本录制回放功能。1、仅限于正对SAP日常工作的批量处理。3、数据模板按实际需求更新。物料编码,工厂,数量。

小九啥也不会 530

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

计算机专业小程序毕业设计-基于nodejs的实验室教学日志系统小程序的设计与实现【附源码、数据库、文档】

计算机专业小程序毕业设计-基于nodejs的实验室教学日志系统小程序的设计与实现【附源码、数据库、文档】

962

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

深入解析 Node.js Events 模块:原理、使用

今天我们深入解析 Node.js 核心模块之一的 events,探讨其在事件驱动架构中的关键作用.通过剖析 events 模块的原理、帮助开发者全面掌握事件驱动编程的精髓,以提升开发效率和代码可维护性

AQ 643

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Linux 安装log.io实现浏览器实时显示服务端日志

使用需求:因部分同事没有堡垒机服务器权限,但又需要看服务器日志,故使用此方法来实现 一、安装 安装前,需要先安装依赖包: 1、npm、node:yum install -y npm nodejs gcc、g++:yum -y install gcc+ gcc-c++ make:yum install make 注:当时遇到坑,缺少gcc所以安装log.io时一直报错 2...

tangcanc的博客 1145

前端基础知识NodeJS系列 - 10( 间件概念的理解,如何封装 node 中间件)

Node.js中间件是位于应用系统和系统软件之间的软件层,主要用于处理HTTP请求细节。在Koa框架中,中间件采用洋葱圈模型,通过async函数或普通函数实现,可执行业务逻辑、修改请求/响应对象等。Koa中间件具有单一职责特性,如token校验、日志记录、请求体解析(koa-bodyparser)和静态文件处理(koa-static)等功能均可通过中间件实现。这种机制使Koa应用具备高度可扩展性和组合性,避免了代码冗余,类似装饰者模式。中间件设计应保持简洁高效,必要时使用缓存优化性能。

m0_67078501的博客 527

小程序毕业设计实例-基于nodejs的实验室教学日志系统小程序的设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)

小程序毕业设计实例-基于nodejs的实验室教学日志系统小程序的设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)

项目帮 651

html从零开始完成爬虫数据展示(续nodejs从零开始制作爬虫)

本次项目基于上次制作的爬虫,将页面的数据展示作了优化,以下满足以下要求:

HDXgege的博客 582

小程序毕业设计-基于nodejs的实验室教学日志系统小程序的设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)

小程序毕业设计-基于nodejs的实验室教学日志系统小程序的设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)

我的个人博客:https://bishe666.top 777

腾讯 tars java_腾讯TARS开源团队郑苏波:腾讯微服务开发框架的源码剖析

郑苏波:大家下午好!我是腾讯微服务的郑苏波。先做一个框架的介绍,Tars是一个支持多语言内嵌服务治理功能的框槛,能跟DevOps比较好的协同开发。这个框架四大特点:一是对用户透明实现,让业务可以聚焦自己的逻辑,不需要关心这个框架提供了哪些能力。二是支持RPC的调用方式,使业务能快速开发。三是高性能的实现。四是丰富的扩展能力,适应不同业务场景。下面我们会以一个比较简单的语言,NodeJS这个语言在T...

weixin_36225248的博客 528

一条 make 命令免费跑通 dockerfiles 的镜像构建,5 分钟上手

装工具想依赖隔离?手工敲 docker 命令总要查参数,自己写 Dockerfile 又懒得维护。这个仓库把几百个工具镜像的构建、运行、测试都压进了 make 目标里,照着敲 4 条命令,5 分钟跑通你的第一个容器镜像。 ## 一、1 分钟把概念说透 把 [dockerfiles](https://link.gitcode.com/i/ff876e96b9a115d08a480d3f976d0

gitblog_01167的博客 419

nodejs+vue+python毕业生实习报告评分系统的java springboot设计与实现

前端技术:nodejs+vue+elementui,视图层其实质就是vue页面,通过编写vue页面从而展示在浏览器中,编写完成的vue页面要能够和控制器类进行交互,从而使得用户在点击网页进行操作时能够正常。实习信息管理系统通过管理员用户导入学生用户账号信息,让学生用户登陆完善自己的实习信息,管理员查看学生信息达到信息交互。默认配置了很多框架的使用方式,自动加载Jar包,为了让用户尽可能快的跑起来spring应用程序。教师端的功能是可以查看学生的周日志并可以对他进行评分,管理学生日志,审查实习证明。

QQ402205496的博客 158

nodejs之日志管理

不管是什么项目,日志一直是一个重要组成部分,它可以随时供你查看重要数据信息,在nodejs中查看实时日志可以用pm2 logs查看,如果用户比较多怎么办了?如何将正常日志和错误日志分开?如何对每天的日志归档?下面我们一起来看下。 使用log4js创建日志文件,新建logs目录,在目录下新建cheese.log和logger.js文件 在logger.js中加入以下代码 var log4js ...

u013196396的博客 1万+
上一篇: Vue的相关基础知识的应用
下一篇: nodejs实现登录认证功能--使用session方式
ccxCode
博客等级 码龄8年 1粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值