当前位置: 首页 > 后端技术 > Node.js

imooknodejs个人学习笔记(日志)

时间:2023-04-03 18:19:26 Node.js

总结:使用fsapi读写文件,以文本方式存储日志,设置crontab定时拆分日志。7.1日志访问日志访问系统中的日志(系统中最重要的日志)自定义日志自定义事件自定义错误等nodejs文件操作nodejs流日志开发和使用日志拆分和日志内容分析写文件是异步的是的,有不需要马上写。使用redis太浪费了。mysql是表结构,不适合,也不需要部署,浪费。文档成本相对较低。7.2nodejs文件操作constfs=require('fs');constpath=require('路径');constfileName=path.resolve(__dirname,'data.log');//读取文件内容fs.readFile(fileName,(err,data)=>{if(err){console.log(err);return}//data是二进制的,需要转成字符串console.log(data.toString());})//写入文件constcontent="市民胡小姐还是个小仙女";constopt={flag:'a'}fs.writeFile(fileName,content,opt,(err)=>{if(err){console.log(err);return;}})//判断是否文件存在fs.exists(fileName,(exists)=>{console.log("exists:",exists);})7.3流介绍性能瓶颈:IO、网络IO、文件IO。与CPU计算和内存读写相比,IO的主要特点是慢。如何在硬件资源有限的情况下提高IO的运行效率。流媒体的概念:观看和加载。节省大量硬件资源。7.45读写日志读取constfs=require('fs')constpath=require('path')constreadline=require('readline')//文件名constfileName=path.join(__dirname,'../','../','logs','access.log');//readStreamimportantconstreadStream=fs.createReadStream(fileName)//创建readline对象importantconstrl=readline.createInterface({input:readStream})letchromeNum=0letsum=0//逐行读取rl.on('line',(lineData)=>{if(!lineData){return}//记录总行数sum++constarr=lineData.split('--')if(arr[2]&&arr[2].indexOf('Chrome')>0){//累计chrome个数chromeNum++}})//监听读取完成rl.on('close',()=>{console.log('chromeproportion:'+chromeNum/sum)})write//写日志函数writeLog(writeStream,log){writeStream.write(log+'\n')//关键代码}//生成写入流functioncreateWriteStream(fileName){constfullFileName=path.join(__dirname,'../','../','logs',fileName)constwriteStream=fs.createWriteStream(全文件名,{flags:'a'})returnwriteStream}//写访问日志constaccessWriteStream=createWriteStream('access.log')functionaccess(log){writeLog(accessWriteStream,log)}module.exports={access}7.7日志拆分中为了提高日志分析效率,使用shell脚本拆分日志crontab,定时执行任务。#!/bin/shcd/Users/huziyin/Documents/Self-study/imook-nodejs/blog-1/logscpaccess.log$(date+%Y-%m-%d).access.logecho"">access。日志

猜你喜欢