您现在的位置是:主页 > 数据存储 >

低价云服务器-如何收集、定制和集中节点.js日志

2020-10-27 11:50数据存储 人已围观

简介小费/日志/当您需要解决节点.js应用程序日志提供有关问题严重程度的信息,以及对其根本原因的深入了解。您可以使用日志来捕获堆栈跟踪和其他类型的活动,并将它们追溯到特定的...

如何收集、定制和集中节点.js日志

小费/日志/当您需要解决节点.js应用程序日志提供有关问题严重程度的信息,以及对其根本原因的深入了解。您可以使用日志来捕获堆栈跟踪和其他类型的活动,并将它们追溯到特定的会话ID、用户ID、请求端点—任何有助于有效监视应用程序的内容。节点.js包括内置的日志记录功能控制台.log,但像Winston这样的专用日志库为创建应用程序提供了更大的灵活性日志。在在本指南中,我们将通过收集定制和丰富您的节点.js温斯顿的日志,然后向您展示如何集中这些日志以深入了解您的应用程序。您将学习如何:创建自己的记录器并自定义其输出端使用元数据、自定义格式和异常处理丰富日志节点.js使用DatadogCollect的日志节点.jslogsWinston是一个流行的、高度灵活的日志库节点.js. 它包括一组健壮的特性,物联网管理平台,用于自定义日志的元数据和格式,以及它们应该如何路由和存储。首先,如果尚未安装,则需要安装温斯顿:npm安装--拯救温斯顿为您的应用程序创建一个自定义记录器要开始,您需要创建一个日志配置文件(例如。,云机服务器,记录器.js)应用程序代码将导入的。虽然winston模块提供了一个默认的记录器,但创建自己的记录器可以更好地控制日志格式、异常处理和日志的路由位置(例如,控制台、文件或流)。您还可以在日志中为应用程序创建日志记录(也可以在日志中配置日志记录文件):logger.jsCopyconst{createLogger,format,transports,config}=require('winston');const logger=创建记录器({运输:[新的运输控制台()]});模块.导出=记录器;上面的示例显示了一个可以立即在应用程序中使用的基本记录器。Winston要求每个记录器至少有一个传输,但您也可以组合多个传输。在构建应用程序和基础设施时,最好为应用程序的每个主要组件创建和配置不同的记录器,以便快速识别日志的来源。这有助于您在调试问题时轻松识别相关的服务或函数。您可以通过为不同的应用程序创建单独的记录器来实现这一点服务:logger.jsCopy[...]const userLogger=创建记录器({运输:[新的运输控制台()]});const paymentLogger=创建记录器({运输:[新的运输控制台()]});模块.导出= {userLogger:userLogger,paymentLogger:paymentLogger};这使您能够根据应用程序服务自定义每个记录器的配置。然后,您可以通过导入记录器.js应用程序文件中的配置并调用它:/routes/用户.jsCopy//要求记录器.jsconst{userLogger,paymentLogger}=require('./logger');[...]用户记录器.info('新用户创建');记录器将记录到控制台,并自动使用以下p的默认值参数:级别:记录的最低严重性(即最高优先级)级别(info)级别:日志优先级协议(净现值水平)格式:日志格式(json,记录器将自动将消息记录到控制台:{"message":"New user created.","level":"info"}当您为日志指定日志级别时,Winston会自动创建一个level属性并应用npm info日志记录级别。在下一节中,我们将进一步了解Winston中可用的日志优先级协议,并向您展示如何向日志添加日志级别,以确保它们以所需的优先级进行日志记录级别。合并日志记录级别的正确级别指示问题的严重性,并有助于对应用程序活动进行分类。例如,信息日志通知您正常的应用程序工作流,例如连接到数据库,而错误日志则指示应用程序中存在问题。默认情况下,Winston使用npm日志优先级协议,该协议将日志级别从0(最高严重级别)到5(最低严重级别):0:error1: 警告2: 信息3: 冗长的4: 调试5: 愚蠢的您还可以创建自己的自定义级别,或者使用levels参数将Winston配置为使用syslog协议,如图所示下图:logger.jsCopyconst userLogger=创建记录器({水平:config.syslog.levels,运输:[新的运输控制台()]});不管使用的日志优先级协议是什么,都可以直接在代码中指定日志级别。例如,错误日志记录级别允许您轻松地对高优先级事件进行分类,例如依赖关系不推荐或操作错误:/routes/users.jsCopy//require记录器.jsconst{userLogger,paymentLogger}=require('./logger');用户记录器.错误(`Unable to find user:${err}`);生成的日志类似于以下内容:{"message":"Unable to find user:user does not exists",网站服务器租用,"level":"error"}日志记录级别有助于对应用程序活动进行分类,因此可以轻松地查明错误。如果将日志转发到日志管理服务,则可以轻松筛选大量日志,确定问题的严重性,并通过将节点.js包含其他应用程序数据(如数据库日志和度量)的日志。在管理大型和复杂的应用程序时,如何存储这些日志非常重要。Winston为您的日志提供了几种传输方式,您可以组合并进一步定制这些传输方式,以确保所有日志都被路由到正确的位置地点。日志对于控制台或Winston文件,云服务器厂商,您可以配置您的记录器,以将日志路由到一个或多个内置传输或目的地,其中:控制台:在本地调试问题文件:到记录到本地存储的文件HTTP:通过winstond这样的日志后台程序将日志流式传输到HTTP端点尽管Winston和其他日志库提供了多种存储日志的选项,但对于生成大量日志的复杂应用程序或系统,日志记录到文件是非常有利的。遵循此最佳实践可确保始终在服务器上本地存储日志的副本。这还意味着,我只是数据,如果出现网络相关错误,阻止应用程序服务器将日志流式传输到传输,则不会丢失关键可见性。记录到一个或多个文件还可以方便地配置日志管理服务来实时跟踪日志文件,因此您可以在一个平台上分析它们,并将它们与来自基础架构其余部分的监控数据关联起来应用程序。你可以通过将日志添加为传输:logger.jsCopyconst userLogger=创建记录器({水平:config.syslog.levels,运输:[新的运输控制台(),新的传输.File({文件名:'合并.log' })]});在上面的示例片段中,除了合并.log文件。这样可以确保在本地调试问题时可以看到日志,并轻松地将日志转发到日志管理服务。也可以为每个传输指定不同的级别。下面的示例显示如何配置记录器以将错误日志路由到控制台,并将信息级别及以下级别的任何内容(例如,警告和错误日志,如果您使用的是npm协议)记录到文件:logger.jsCopytransports: [新的运输控制台({level:error}),新的传输.File({文件名:'合并.log'级别:'信息'})],虽然Winston提供了一些基本的默认日志选项,但是我们已经看到定制日志记录级别和传输以更好地控制日志数据是多么容易。在下一节中,我们将介绍如何使用元数据、自定义格式和异常丰富日志处理。丰富具有自定义元数据和格式的日志随着基础结构的增长,您可能需要包含更多诊断信息,以便于故障排除。日志中包含足够的信息对于高效地查明应用程序中的问题至关重要,尤其是在跨多个服务器生成大量日志的环境中。Winston提供了在全局和本地级别添加元数据的选项。这意味着您可以自动将有用的数据合并到所有日志中,并自定义在单个日志中捕获的数据。例如,您可能会发现在特定服务的每个日志消息中查看用户ID、请求端点和/或IP地址非常有用。通过将此类信息添加到日志元数据中,您可以查明可能只影响您的用户。添加将日志集中到日志管理平台后,全局级别的日志元数据的全局元数据对于查询和分析日志非常有用,以及标识与特定记录器关联的应用程序服务。您可以使用Winston的defaultMeta参数来配置记录器,以便将全局元数据添加到每个日志中生成:logger.jsCopyconst userLogger=创建记录器({水平:config.syslog.levels,defaultMeta:{component:'用户服务'},运输:[新的运输控制台(),新的传输.File({文件名:'合并.log' })]});在上面的示例中,记录器将自动在所有日志中包含一个组件属性:{"component":"user service","level":"info","message":"Session connected"}如上例所示,使用全局元数据有助于快速识别与记录器关联的应用程序组件。在一个复杂的应用程序中,在日志中看到这类信息对于解决问题至关重要,因为它会立即将您指向应该查看的组件首先,添加元数据直接添加到单个日志

Tags: 收集  日志  集中  定制  如何  节点 

站点信息

  • 文章统计3903篇文章
  • 标签管理标签云
  • 微信公众号:扫描二维码,关注我们