文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Node输出日志的正确方法是什么

2023-07-05 09:13

关注

本篇内容主要讲解“Node输出日志的正确方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Node输出日志的正确方法是什么”吧!

背景

每个程序员都喜欢在有问题的代码中插入一些日志的方法来帮助调试程序,比如System.out.println或console.log。解决后,就会将这些语句删除,周而复始。

但是通过系统日志输出的日志格式都是这种:

// outputconsole.log("log"); // logconsole.info("message"); // messageconsole.warn("Warning");// warning

现在想象一下,如果你在后端排查问题时,你有数百条这样的信息。这样的日志不仅很难知道消息级别或消息记录的日期,而且过滤和排序日志也是一项艰巨的任务。

我们排查问题时,更期望看到这样的日志:

{"level":"error","message":"Error message","timestamp":"2022-09-20T11:39:33.953Z"}

{"level":"warn","message":"Warning message","timestamp":"2022-09-20T11:39:33.957Z"}

{"level":"info","message":"Info message","timestamp":"2022-09-20T11:39:33.957Z"}

日志API就是为了解决这个问题而设计的。日志API的优点:

在 Node.js 应用中进行日志记录是非常重要的,因为它可以帮助我们跟踪应用程序中的问题和错误。接下来介绍 一下Node.js 的日志记录技术。

使用 Winston 进行日志记录

Winston是一个流行的、功能丰富的、灵活的Node.js日志库。它使用的默认格式是JSON,但可以配置向多个存储设备中发送日志,目前每周下载量接近1千万。

Node输出日志的正确方法是什么

安装和使用 Winston

要使用 Winston,首先需要安装它。可以使用 npm 安装 Winston:

npm install winston

安装完成后,在应用程序中引入 Winston:

const winston = require('winston');

现在可以创建一个 Winston 实例,并开始记录日志。以下是一个示例:

const winston = require('winston');const logger = winston.createLogger({     level: 'info',     format: winston.format.json(),     transports: [         new winston.transports.Console(),         new winston.transports.File({       filename: 'error.log', level: 'error'     })    ]}); logger.info('Hello, world!');

在上面的示例中,创建了一个名为 logger 的 Winston 实例。指定了日志级别为 info,表示只记录等级为 info 或更高的日志消息。我们还指定了一个 json 格式化器,以便记录格式化的 JSON 日志消息。定义了两个传输器,一个将日志消息记录到控制台,另一个将错误日志消息记录到名为 error.log 的文件中。

Winston 的日志级别

Winston 支持多个日志级别,可以根据日志消息的严重程度选择不同的日志级别来记录。Winston 的日志级别从高到低分别为:

Winston 的格式化器

Winston 的格式化器可以帮助我们格式化日志消息,以便更好地组织和分析日志数据。Winston 提供了多个内置的格式化器,例如 jsonsimpleprettyPrint 等。我们也可以自定义格式化器,根据自己的需求来记录日志数据。

以下是一个使用 json 格式化器记录日志的示例:

const winston = require('winston'); const logger = winston.createLogger({     level: 'info',     format: winston.format.json(),     transports: [new winston.transports.Console()] }); logger.info({ message: 'Hello, world!', user: 'Alice' });

Winston 的传输器

Winston 支持多个传输器,可以将日志消息记录到不同的目标中,例如控制台、文件、数据库、syslog 等。以下是一个将日志消息记录到文件中的示例:

const winston = require('winston'); const logger = winston.createLogger({     level: 'info',     format: winston.format.simple(),     transports: [    new winston.transports.File({ filename: 'app.log' })  ] }); logger.info('Hello, world!');

在上面的示例中,我们使用 File 传输器将日志消息记录到名为 app.log 的文件中。我们设置日志级别为 info,只记录等级为 info 或更高的日志消息。

除了输出到文件中,Winston还支持输出控制台、http请求以及流的方式。

Node输出日志的正确方法是什么

我们也可以自定义输出的方式,比如输出到邮件、通过接口消息通知等等。

Winston的实践

在实际使用过程中,我比较喜欢将console.log进行一次封装。将 console.log 绑定到 logger.info 方法。每次调用 console.log 时,实际上是在调用 logger.info 方法。因此,日志消息将通过Winston的Console传输器发送到标准控制台中和文件中。

const winston = require('winston');const logger = winston.createLogger({  transports: [    new winston.transports.Console(),    new winston.transports.File()  ]});// 将 console.log 绑定到 logger.info 方法console.log = logger.info.bind(logger); // 使用 console.log 记录日志消息console.log('Hello, Winston!');console.log('This is a log message.');// error 也可以绑定到logger上,但是建议输出file时,指定新的文件名,方便后续的日志查看。console.error = logger.error.bind(logger);

如果不在需要日志记录时,可以直接设置level为off,就可以停止日志的记录。

接入es

日志输出和日志格式解决之后,为了方便检索和更快的排查问题,可以将日志接入es。

下面是接入es后,通过kibana查看的结果:

Node输出日志的正确方法是什么

将日志接入 Elasticsearch (ES) 的好处:

注意事项

到此,相信大家对“Node输出日志的正确方法是什么”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯