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

实现node日志管理

时间:2023-04-03 23:17:17 Node.js

第一次写node项目。之前接触过一些简单的,除了前端脚手架搭建,所以总是会遇到很多坑。比如权限校验,比如异常处理,比如日志管理。看到log4js的使用方法,突然想到不用组件也能实现简单的业务。虽然很简单,但是我很高兴能够实现它。为什么需要日志管理?自己写过一段时间的node项目,但是一直没有加入日志管理的功能,因为觉得没有必要,而且经常在自己的电脑上调试。但是突然有一天在网上访问我的项目时,发现页面报错。想知道为什么会报错,发现也没有什么好办法。如果不是我通过什么东西记录下来的话,这个时候日志管理就显得尤为重要了。向上。日志生成过程中页面出现错误。根据错误类型创建日志文件并写入错误信息。创建日志方法的实现首先判断要写入的路径是否存在。然后create判断当前要创建的日志是否存在,存在则继续写入,不存在则创建并写入fs.stat查看路径是否存在fs.mkdir创建目录方法fs.readFile读取一个文件方法fs.writeFilewrites进入文件的方法完成的写日志功能我的业务是定义两个类型,error和sql,然后传入日志内容/***writelog*@param{String}type//日志类型err错误日志sqlsqllog*@param{String}content*/writeLog(content,type='err'){//创建一个不存在的文件夹awaitthis.dirExists(`log/file/${type}`)//获取文件fs.readFile(`log/file/${type}/${utils.switchTime(newDate(),'YYYY-MM-DD')}.log`,(err,data)=>{if(err){console.log(err)}//写入文件fs.writeFile(`log/file/${type}/${utils.switchTime(newDate(),'YYYY-MM-DD')}.log`,`${data||''}\n${content}`,async(err)=>{if(err){console.log(err)}})})}用于sql执行函数Usefunctionquery(sql){//写sqlNodeLog.writeLog(sql,'sql')returnnewPromise((resolve,reject)=>{pool.getConnection((错误,康恩)=>{if(err){//如果连接断开,自动重连if(err.code==='PROTOCOL_CONNECTION_LOST'){setTimeout(query(),2000);reject('断开并重新连接');}else{console.error(err.stack||err);拒绝(错误);}}else{//获取结果conn.query(sql,(queryErr,result)=>{if(queryErr){reject(queryErr);}else{resolve(result);}//释放连接conn.release();})}})})}在异常处理程序中使用handleException(req,res,e){//写入日志NodeLog.writeLog(e)res.json({code:e.errno||20501,success:false,content:e,message:'Internalservererror'})}完整代码节点工程对应的前端工程最后记录