日志记录

为什么,什么 & 我们如何记录日志

选择 CLI 版本

描述

npm CLI 有多种机制用于向最终用户显示某些命令、配置和环境的不同信息级别。

设置日志文件位置

所有日志都写入调试日志,如果命令执行失败,则会打印该文件的路径。

日志目录的默认位置是 npm 缓存内部名为 _logs 的目录。可以使用 logs-dir 配置选项更改此位置。

例如,如果要将所有日志写入当前工作目录,可以运行: npm install --logs-dir=. 。这在调试特定 npm 问题时特别有用,因为可以使用不同的配置值多次运行命令,然后对所有日志文件进行 diff。

当日志文件数量超过 logs-max 时,日志文件将从 logs-dir 中删除,最旧的日志将首先被删除。

要完全关闭日志,请设置 --logs-max=0

设置日志级别

loglevel

loglevel 是一个全局参数/配置,可以设置为确定要显示的信息类型。

loglevel 的默认值为 "notice" ,但还有几种日志级别/类型可用,包括

  • "silent"
  • "error"
  • "warn"
  • "notice"
  • "http"
  • "info"
  • "verbose"
  • "silly"

将显示与当前设置之前的级别相关的所有日志。

别名

上面列出的日志级别有各种相应的别名,包括

  • -d : --loglevel info
  • --dd : --loglevel verbose
  • --verbose : --loglevel verbose
  • --ddd : --loglevel silly
  • -q : --loglevel warn
  • --quiet : --loglevel warn
  • -s : --loglevel silent
  • --silent : --loglevel silent

foreground-scripts

v7 开始, npm CLI 开始隐藏 npm install 的生命周期脚本的输出。值得注意的是,这意味着您将看不到可能使用“安装脚本”向您显示信息的包的日志/输出,或者您自己的项目在 package.json 中定义的脚本。如果要更改此行为并记录此输出,可以将 foreground-scripts 设置为 true

计时信息

--timing 配置 可以设置,它执行以下几项操作

  1. 始终显示调试日志的完整路径,无论命令退出状态如何
  2. 将计时信息写入缓存或 logs-dir 中特定于进程的计时文件
  3. 将计时信息输出到终端

此文件包含一个 timers 对象,其中键是正在计时的进程部分的标识符,值是完成该部分所花费的毫秒数。

有时,在不向终端输出任何内容的情况下获取计时信息会很有帮助。例如,性能可能会受到写入终端的影响。在这种情况下,可以使用 --timing --silent ,它仍然会写入计时文件,但在运行时不会向终端输出任何内容。

注册表响应头

npm-notice

npm CLI 读取并记录从配置的注册表返回的任何 npm-notice 头。此机制可供第三方注册表在发生依赖于网络的请求时提供有用的信息。

此头不会被缓存,如果请求从缓存中提供服务,则不会被记录。

日志和敏感信息

npm CLI 尽力从终端输出和日志文件中删除以下内容

  • 基本身份验证 URL 中的密码
  • npm 令牌

但是,不应依赖此行为来保证所有可能的敏感信息都被删除。如果您担心日志文件或终端输出中的机密信息,可以使用 --loglevel=silent--logs-max=0 确保没有日志写入您的终端或文件系统。

另请参阅