日志记录

配置日志记录

NATS 服务器提供了各种日志选项,你可以通过命令行或配置文件设置。

命令行选项

支持以下日志操作:

-l, --log FILE                   File to redirect log output.
-T, --logtime                    Timestamp log entries (default is true).
-s, --syslog                     Enable syslog as log method.
-r, --remote_syslog              Syslog server address.
-D, --debug                      Enable debugging output.
-V, --trace                      Trace the raw protocol.
-VV                              Verbose trace (traces system account as well)
-DV                              Debug and Trace.
-DVV                             Debug and verbose trace (traces system account as well)

调试和追踪

-DV 选项为服务器启用追踪和调试。

nats-server -DV -m 8222 -user foo -pass bar

日志文件重定向

nats-server -DV -m 8222 -l nats.log

时间戳

如果 -T false 则日志条目不带时间戳。默认为 true。

系统日志

你可以使用 UDP 配置系统日志:

nats-server -r udp://localhost:514

syslog:

nats-server -r syslog://<hostname>:<port>

例如:

syslog://logs.papertrailapp.com:26900

使用配置文件

所有这些设置也能在配置文件中使用。

debug:   false
trace:   true
logtime: false
logfile_size_limit: 1GB
logfile_max_num: 100
log_file: "/tmp/nats-server.log"

日志轮转

在 NATS Server v2.1.4 中引入,当大小大于 logfile_size_limit 中设置的配置限制时,NATS 允许自动轮转日志文件。备份文件将与原始日志文件同名,后缀为 .yyyy.mm.dd.hh.mm.ss.micros。

你还可以将 NATS 包含的机制与 logrotate 结合使用,这是一个简单的标准 Linux 实用程序,可在大多数发行版(如 Debian、Ubuntu、RedHat (CentOS) 等)上用于轮转日志,使日志轮转变得简单。

例如,你可以配置 logrotate

/path/to/nats-server.log {
    daily
    rotate 30
    compress
    missingok
    notifempty
    postrotate
        kill -SIGUSR1 `cat /var/run/nats-server.pid`
    endscript
}

第一行指定后续行将应用的位置。

文件的其余部分指定日志将每天轮转("daily" 选项)并且将保留 30 个旧副本("rotate" 选项)。其他选项在 logrotate 文档 中有描述。

"postrotate" 部分告诉 NATS 服务器在轮转完成后重新加载日志文件。命令 `kill -SIGUSR1cat /var/run/nats-server.pid``` 不会杀死 NATS 服务器进程,而是向其发送信号,使其重新加载日志文件。这将导致新请求记录到刷新的日志文件中。

/var/run/nats-server.pid 文件是 NATS 服务器存储主进程 pid 的位置。

一些额外说明

  • NATS 服务器在详细模式下将记录 UNSUB 消息的接收,但这并不表示订阅已消失,仅表示消息已收到。日志中的 DELSUB 消息可用于确定实际订阅移除何时发生。