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

winston日志库如何创建自定义记录器

时间:2023-03-28 17:06:15 HTML

代码:const{createLogger,format,transports,config}=require('winston');constusersLogger=createLogger({levels:config.syslog.levels,format:combine(timestamp({format:'YYYY-MM-DDHH:mm:ss'}),transports:[newtransports.File({文件名:'users.log'})]});consttransactionLogger=createLogger({transports:[newtransports.File({filename:'transaction.log'})]});module.exports={usersLogger:usersLogger,transactionLogger:transactionLogger在上面的例子中,应用程序有两个服务,用户和事务。这些服务创建不同的记录器将是相关的。这些区分各种应用程序服务的问题。例如,假设一个user.js文件处理用户服务属性,下面的例子将申请一个简单的日志。//Requirelogger.jsconst{usersLogger,transactionLogger}=require('./logger');.......//你的用户代码设置..........//向users.logusersLogger.info('Newusercreated');usersLogger.error(`Unabletofinduser:${err}`)记录什么;在实际应用中,我们可以在创建新用户或发生新事务时创建以下日志。属性将被提取并记录在日志文件中。User.js://Requirelogger.jsconst{usersLogger,transactionLogger}=require('./logger');......//你的用户代码设置................usersLogger.info('用户已创建!',{user_id:`${res._id}`,user_name:`${res.name}`,user_email:`${res.email}`,);usersLogger.error(`Unabletofinduser:${err}`);Transaction.js:://Requirelogger.jsconst{usersLogger,transactionLogger}=require('./logger');..........//YourTransaction'codesetups.................//TransactionlogstransactionLogger.info('Sessionconnected',{session_id:`${req.id}`},{user_id:`${res._id}`);transactionLogger.info('交易启动',{transaction_id:`${req.transaction_id}`},{user_id:`${res.user_id}`);transactionLogger.info('交易完成',{user_id:`${res.user_id}`,{`${req.transaction_amout}`,`${req.transaction_code}`});transactionLogger.error('TransactionFailed',`{${err}`,session_id:`${req.id}`},{user_id:`${res._id}`);这使管理日志变得更容容易,因为针对特定问题进行了分离,并且提供了用户和事务属性以帮助将其缩小到特定用户或事务其他日志记录中间件除了winston我们还有其他库选择,如下所示。morganMorgan用于记录HTTPWeb服务器。它结合了Node.js和Express。Morgan记录来自HTTP服务器的响应和请求。它的日志条目基于HTTP请求和错误日志行。Logger函数访问req和res等对象。res-HTTP响应对象。req-HTTP请求对象。此函数将向日志行返回一个字符串日志条目。Morgan旨在以与Apache和Nginx等服务器处理访问日志或错误日志的方式相同的方式记录错误。下面是一个Morgan记录器的例子:)//创建写入流(追加模式)constaccessLogStream=fs.createWriteStream(path.join(__dirname,'access.log'),{flags:'a'})//设置loggerapp.use(morgan('组合',{stream:accessLogStream}))app.get('/',(req,res)=>{res.send('HelloWorld!')})app.listen(3000,()=>{console.log("ServerListeningonport3000");})运行应用程序并在浏览器上点击http://localhost:3000/。Morgan将在access.log文件中记录以下内容。::1--[12/Nov/2020:09:19:46+0000]"GET/HTTP/1.1"304-"-""Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,像Gecko)Chrome/86.0.4240.183Safari/537.36"BunyanBunyan以JSON格式记录日志条目。该格式是使用时间戳和主机名等基本字段自动生成的。与Winston记录器一样,创建一个记录器实例,并记录您的消息。constbunyan=require("bunyan");constlog=bunyan.createLogger({name:"myapp"});log.info("hi");log.warn({lang:"fr"},"aurevoir");输出:{"name":"myapp","hostname":"Doe","pid":14244,"level":30,"msg":"hi","time":"2020-11-12T08:22:41.398Z","v":0}{"name":"myapp","hostname":"Doe","pid":14244,"level":40,"lang":"fr","msg":"aurevoir","time":"2020-11-12T08:22:41.400Z","v":0}log4js以下Log4js示例将错误记录到文件(log4.log)和控制台中添加在。//RequireLog4jsconstlog4js=require('log4js');//Logger配置log4js.configure({appenders:{fileAppender:{type:'file',filename:'./logs/log4.log'},console:{type:'console'}},categories:{default:{appenders:['fileAppender','console'],level:'error'}}});//创建loggerconstlogger=log4js.getLogger();//记录一些消息logger.trace('Trace,log4js!');logger.debug('Debug,log4js!');logger.info('Hello,log4js!');logger.warn('Headsup,log4js!');logger.error('Danger,log4js!');logger.fatal('Fatal,log4js!');输出:[2020-11-12T11:27:21.278][ERROR]default-Danger,log4js![2020-11-12T11:27:21.291][致命]默认-致命,log4js!