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

Nodejs日志插件对比VS自定义日志插件

时间:2023-04-03 20:39:39 Node.js

morgan[优点]Morgan配置非常简单[优点]支持自定义日志格式[优点]支持日志扩展[优点]支持日志压缩:使用rotating-file-stream[缺点]不能同时将日志写入控制台和文件log4js-node[优点]配置简单[优点]支持同时向控制台和文件写入数据[优点]支持根据时间或文件大小拆分文件[优点]支持文件压缩“usestrict”;varpath=require('path'),log4js=require('../lib/log4js');log4js.configure({appenders:[{type:"file",filename:"important-things.log",maxLogSize:10*1024*1024,//=10MbnumBackups:5,//保留五个备份文件compress:true,//压缩备份encoding:'utf-8',mode:parseInt('0640',8),flags:'w+'},{type:"dateFile",文件名:"more-important-things.log",pattern:"yyyy-MM-dd-hh",compress:true},{type:"stdout"}]});varlogger=log4js.getLogger('东西');logger.debug("这个小东西去了市场");logger.info("这个小东西呆在家里");logger.error("这个小东西吃了烤牛肉");logger.fatal("Thislittlethinghadnone");logger.trace("andthislittlethingwentweewee,wee,wee,allthewayhome.");Winston从未使用过它,所以没有评论fluent-logger-node将日志写入fluntd,没用过express-winston没用过如何自定义日志插件可以自定义日志结构日志文件可以用gzip压缩,不影响向控制台写入日志可以按时间拆分日志支持日志覆盖,最多保留备份1个月旋转文件流varpath=require('path');varfs=require('fs');varrfs=require('rotating-file-stream');varlogDirectory=__dirname;functionWpad(num){return(num>9?"":"0")+num;}/***[Wgenerator创建文件名函数]*@AuthorWdd*@DateTime2017-02-22T10:13:39+0800*一个日志willbekeepMonthly:因为日志文件名只用日期,所以9月8日的日志会覆盖8月8日的日志*文件格式为gzip*文件名例如:22-log.gizp*/函数Wgenerator(time,index){if(!时间){返回“temp-log.txt.gzip”;}return"/storage/"+Wpad(time.getDate())+"-log.txt.gzip";}varaccessLogStream=rfs(Wgenerator,{interval:'1d',//周期为1天路径:logDirectory,compress:'gzip',rotationTime:true});/***[exportsdescription]*@AuthorWdd*@DateTime2017-02-22T10:24:06+0800*使用方法:*1.安装rotating-file-stream*2.在根目录下创建文件夹,比如logs。然后把access-log.js放在*3.在app.js中varmylog=require('./logs/access-log');*4.在app=express();mylog之后添加一句app.use();*5../logs/storage文件夹下会自动生成日志文件,当天的日志会保存在临时的./logs/temp-log.gzip*/module.exports=function(req,res,next){req._startTime=newDate();res.once('finish',function(){varmsg="";//hostnamemsg=process.env.hostname+"";//timemsg+=newDate()+"";//请求方法msg+=req.method+"";//响应状态码msg+=res.statusCode+"";//sessionIdmsg+=req.headers.sessionid+"";//响应持续时间msg+=newDate()-req._startTime;//请求路径msg+=""+req.originalUrl+'\n\r\n\r';accessLogStream.write(msg);});下一个();};