如何让Node.js正确地日志
发布网友
发布时间:2022-04-22 08:03
我来回答
共2个回答
热心网友
时间:2022-04-12 12:49
为了完成这点,你会需要使用一个最流行的开发包,叫做 winston. Winston 是一个 Node.js 的多通道异步传输日志库。
你可以通过安装 winston 的方式,添加它到你的项目中:
一旦你安装之后,你可以这样添加 winston 到你的项目:
上面的代码片段会推送接下来的这行信息到 stdout :
如同你所看到的那样,我们传递了 info 字符串到 winston ,从而告诉 winston 这个将要日志的事件有一个日志级别与之关联,也就是 info。默认情况下, winston 附带了接下来的几种日志级别 (也可以添加自定义的级别) :
你可以通过接下来的一行设置日志的级别:
在 RisingStack ,我们通常利用一个叫 LOG_LEVEL 的环境变量来配置。这样的话,我们就可以动态改变哪些内容应该被日志记录:
当你的日志级别是 silly 时,你应该尽可能的多记录所有的日志。尽管如此,你还是需要遵守一个经验法则:绝对不要记录凭证,密码以及任何敏感的信息。
“绝对不要记录凭证,密码以及任何敏感的信息。” via @RisingStack #nodejs #logging #security
点击直达 TWEET
通常来说,会有至少一个以上的用户访问日志,所以,日志事件里面包含凭证信息会增加额外的风险。
当你 开始使用微服务 , 从日志角度来看,最大的挑战就是分布式追踪。
在一个分布式的架构中,错误检测会令人沮丧,因为由于系统的瑕疵会导致大量的警报信息涌现。分布式追踪的目的就是为了消除这个问题,它可以提供更多的事务和错误的视角,而普通的日志文件并没有能力做到这些。
为了做到这点,你不得不使用一个所谓的相关标识符——并且把它传递给所有的参与事务操作的服务。然后,如果每行日志都标注了这个 ID ,你就可以搜索这些事件了。
为了生成一个唯一的 ID ,你可以这样使用 uuid 模块:
这个 ID 不得不在函数调用中传递,并且它也不得不被发送到下游的服务。 如同你可以想象到的,这不是个特别值当的任务。
这里讲到追踪,我们的 Node.js / 微服务监控 解决方案如下图所示。追踪相关的 ID 到请求的容器,并且可视化了一个简单的树状图的数据流。你不会需要去搜索日志,因为它会直接以一种容易理解的方式去展示你的事务:
Node.js distributed tracing with trace by risingstack
根据这种方式, 你可以直接看到你的微服务和持续产生的 issue 之间的依赖关系
如果你实现了我们刚刚讨论的这些方法和工具,Node.js 的日志记录将不再是一件难事。
如何让Node.js正确地日志
当你的日志级别是 silly 时,你应该尽可能的多记录所有的日志。尽管如此,你还是需要遵守一个经验法则:绝对不要记录凭证,密码以及任何敏感的信息。“绝对不要记录凭证,密码以及任何敏感的信息。” via @RisingStack #nodejs #logging #security 点击直达 TWEET 通常来说,会有至少一个以上的用户访问日...
Node.js日志之winston使用指南
控制日志发送的位置:将日志同步保存到多个目的地(如Elasticsearch、MongoDB、Postgres等)。自定义日志格式:带有时间戳、颜色日志级别、JSON格式等前缀。winston实践实践代码将在项目pretender-service中增加日志功能,安装依赖:npminstallwinston--save接下来需要初始化logger,由于项目中已经存在一个logger.js文...
nodejs npm -v报错怎么处理?
解决方法是修改npm命令,将`--global`或`--local`替换为`--location=global`。例如,如果在命令中使用了`--global`,将其替换为`--location=global`即可。确保在使用npm命令时,根据提示正确修改配置选项,可以避免出现上述错误,保证npm命令的正常执行。
PM2实时查看Node.js项目的输出日志!
清理日志文件或设定日志文件的保留策略,比如定期清除过期日志,可以防止磁盘空间过度占用。部分高级功能,如监控日志文件大小和自动滚动,可能需要额外的第三方插件支持,查阅相关文档以获取具体实现方法。通过以上步骤,你可以灵活地管理PM2管理下的Node.js项目日志,确保项目的稳定运行和高效维护。
Node.js使用笔记
通过添加n模块来管理Node.js版本。操作步骤包括:清除npm缓存、安装n模块,使用n模块安装最新稳定版本及指定版本。在Linux系统中,借助n模块实现Node.js版本管理,通过交互式操作管理版本。若使用express框架,配置静态文件路径变得简便,将目录作为参数传递给express.static中间件,允许访问public目录下的静态资源...
Node.js 应用故障排查手册 —— Node.js 性能平台使用指南
首先,配置合适的告警。线上应用的告警是一种保护机制,可自我发现并解决问题。部署项目后,开发者需配置合适的告警,包括错误日志、Node.js 进程 CPU/Memory 分析、核心转储和磁盘分析等。平台已预设告警策略,只需选择即可完成配置。其次,按照告警类型进行分析。当收到告警短信时,可按照策略类型进行对应...
七爪源码:像专业人士一样在 Node.js 中处理错误
优雅地重启应用,以避免出现不可预料的问题。使用错误中间件集中处理错误,遵循单一责任原则,分离关注点。最后,通过实践,你将能更熟练地处理 Node.js 中的错误,构建更稳定、更安全的应用程序。不断学习和实践,你的编程技能将得到显著提升。愿你在编程之旅中取得更多成就。
如何提高nodejs程序的稳定性,健壮性
1)保持良好的代码结构:我们知道node是单线程,非阻塞io,默认就是异步,通过回调的方式处理后面的流程,如果嵌套的层次太多了,势必会引起代码逻辑结构的混乱,也不利于维护和升级,可以采用async这个异步流程控制模块,来理清我们的代码逻辑。2)使用 process.on('uncaughtException', function(err){...}...
新手入门级 | nodejs调试
1. 起步:安装Node.js和VSCode 首先,从网上找到教程安装Node.js 接着,安装VSCode作为你的开发环境 2. 编写与调试基础代码 在Node.js安装路径下的app文件夹中编写js代码,如创建一个监听33456端口并处理file参数的简单服务 遇到问题:VSCode运行时报错找不到'express'模块 解决方法:在项目...
node.js有没有自动记录bug的东西
可以使用uncaughtException来全局捕获未捕获的Error,同时你还可以将此函数的调用栈打印出来 使用 try/catch 使用node-forever 提供了守护的功能和LOG日志记录功能。