当前位置: 首页 > Web前端 > HTML5

日志库winston学习笔记-使用winston创建Node.js应用

时间:2023-04-05 18:13:28 HTML5

winston被设计为一个支持多种传输的简单通用日志库。传输本质上是日志的存储设备。每个winstonlogger都可以配置多个不同级别的存储通道。例如,可能希望将错误日志存储在一个持久的远程位置(例如数据库),但将所有调试日志输出到控制台或本地文件。使用winston的推荐方法是创建您自己的记录器。最简单的方法是使用winston.createLogger:constwinston=require('winston');constlogger=winston.createLogger({level:'info',format:winston.format.json(),defaultMeta:{service:'user-service'},transports:[////-写入级别为`的所有日志error`及以下到`error.log`//-将级别为`info`及以下的所有日志写入`combined.log`//newwinston.transports.File({filename:'error.log',level:'error'}),newwinston.transports.File({filename:'combined.log'}),],});////如果我们不在生产中,则使用格式登录到`console`://`${info.level}:${info.message}JSON.stringify({...rest})`//if(process.env.NODE_ENV!=='production'){logger.add(newwinston.transports.Console({format:winston.format.simple(),}));}winston的日志等级别const级别={error:0,warn:1,info:2,http:3,verbose:4,debug:5,silly:6};如何创建loggerconstlogger=winston.createLogger({transports:[newwinston.transports.Console(),newwinston.transports.File({filename:'combined.log'})]});即使在创建记录器实例之后,也很容易删除或添加新的传输:constfiles=newwinston.transports.File({filename:'combined.log'});constconsole=newwinston.transports.Console();logger.clear()//删除所有传输.add(console)//添加控制台传输.add(files)//添加文件transport.remove(console);//移除consoletransport也可以使用logger的configure方法重新配置一个新的transport:constlogger=winston.createLogger({level:'info',transports:[newwinston.transports.Console(),newwinston.transports.File({文件名:'combined.log'})]});////用//新配置批发中的传输替换以前的传输。//constDailyRotateFile=require('winston-daily-rotate-file');logger.configure({level:'verbose',transports:[newDailyRotateFile(opts)]});在winston中,Logger和Transport实例都被视为接受信息对象的objectMode流提供给给定格式的信息参数表示单个日志消息。对象本身是可变的。每条消息必须至少具有级别和消息属性:constinfo={level:'info',//日志消息的级别message:'Hey!记录什么?//正在记录的描述性消息。};除了level和message以外的属性都被认为是“元属性”:const{level,message,...meta}=info;让我们写一个实际的例子。主程序://@ts-nocheckvarexpress=require('express');varapp=express();varDEFAULTPORT=3003;varport=process.env.PORT||默认值;varwinstonTest=require("./winstonTest");app.get('/',function(_req,res){res.send("Helloworld");winstonTest.logMessage('234');});app.listen(port,function(){console.log("Applistensonport:"+port);});winstonTest的现实:constwinston=require('winston');constlogger=winston.createLogger({level:'info',format:winston.format.json(),defaultMeta:{service:'user-service'},transports:[////-写入级别为`的所有日志error`及以下到`error.log`//-将级别为`info`及以下的所有日志写入`combined.log`//newwinston.transports.File({filename:'data/error.log',level:'error'}),newwinston.transports.File({filename:'data/combined.log'}),]});if(process.env.NODE_ENV!=='production'){logger.add(新的winston.transports.Console({格式:winston.format.simple(),}));}console.log('Logger初始化成功!');functionlog(content){logger.info('hello',{message:content});}module.exports={日志消息:日志};在浏览器中输入以下url:http://localhost:3003/在combined.log中生成如下日志文件:这是winston最基本的使用方法