日志目的地

runtime.log类别下的destination类别提供了允许您控制Antora写入日志消息的键。您可以配置Antora将消息写入标准流或文件。您还可以控制Antora何时以及如何写入这些日志消息。

默认目的地

默认的目的地文件与日志格式相关联。如果日志格式是pretty,默认目的地是标准错误流(stderr)。如果日志格式是json,默认目的地是标准输出流(stdout)。在任何情况下,消息将显示在您的终端输出中。

file键允许您控制Antora选择哪个标准流,或配置Antora将日志消息路由到本地文件。

文件键

file键配置在playbook中log类别键的destination类别键下。file键是可选的。此键的值可以是本地文件的路径,值stdout(或1)表示标准输出流,或值stderr(或2)表示标准错误流。

示例1. antora-playbook.yml
runtime:
  log:
    destination:
      file: ./antora.log

如果设置了此键,则指定的目的地将被使用,而不管日志格式如何,而不是使用默认目的地

file的解析规则与playbook中的任何路径相同。相对路径将使用以下规则扩展为绝对路径:

  • 如果第一个路径段是波浪号(~),则剩余路径相对于用户的主目录解析。

  • 如果第一个路径段是点(.),则剩余路径相对于playbook文件的位置解析。

  • 如果第一个路径段是波浪号直接跟着加号(~+),或不以前述前缀开头,则剩余路径相对于当前工作目录解析。

如果file键的值是本地文件的路径,而不是标准流,并且日志格式是pretty,则消息不会被着色。请记住,如果将日志消息路由到文件,您将不再在终端中看到这些消息。您需要检查日志文件以查看Antora是否向其写入了任何日志消息。

默认情况下,Antora在写入文件之前截断文件。您可以使用append键更改此行为。

追加键

append键配置在playbook中log类别键的destination类别键下。append键是可选的。此键的值可以是truefalse。默认情况下,值为false。如果将值设置为true,Antora将在写入文件之前不截断(即不清除)文件。这意味着来自Antora上一次运行的日志消息将被保留。

示例2. antora-playbook.yml
runtime:
  log:
    destination:
      file: ./antora.log
      append: true

此键仅在file键被指定为本地文件路径时才相关。

默认情况下,Antora会立即将日志消息写入目的地。您可以使用buffer_sizesync键来控制此行为。

缓冲区大小键

buffer_size键配置在playbook中log类别键的destination类别键下。buffer_size键是可选的。此键的值可以是0或正整数。该值表示要缓冲的字节数(例如,4096表示4K)。

默认情况下,该值为0,这意味着Antora不会缓冲日志消息。如果值大于0,则Antora将批量处理日志消息,直到达到或超过指定的字节大小。一旦缓冲的日志消息的驻留大小达到或超过此值,Antora将刷新缓冲区到目的地。

示例3. antora-playbook.yml
runtime:
  log:
    destination:
      buffer_size: 4096

如果将日志消息路由到文件,则buffer_size键提供了一种避免过多写入的方法。通常只有在运行Antora时遇到资源问题时才需要使用此键。

sync键提供了另一种控制写入的方式。

同步键

sync键配置在playbook中log类别键的destination类别键下。sync键是可选的。此键的值可以是truefalse。默认情况下,值为true,这意味着Antora使用同步操作写入目的地。如果将值设置为false,Antora将切换到使用异步操作写入目的地。这意味着日志消息将在下次Node.js进程可以执行I/O操作时写入。

示例4. antora-playbook.yml
runtime:
  log:
    destination:
      file: ./antora.log
      sync: false

sync键设置为false可以防止日志事件暂停程序以完成写入。相反,这些写入被放入队列,并在下次Node.js进程处于空闲状态时执行,例如在执行网络操作时。换句话说,写入自然地被批处理。如果生成您的站点产生大量日志消息,这可以帮助Antora更有效地执行。

您可以将sync键与buffer_size键结合使用,以最大化延迟多少日志消息写入。