日志

tsuru会收集每个应用的标准输入和标准错误,使得调试问题更加容易。要使用日志,请确保你应用的日志发送到了stdout和stderr。

监控日志

要看到应用的日志。可以使用tsuru app-log命令:

  1. $ tsuru app-log -a <appname>
  2. 2014-12-11 16:36:17 -0200 [tsuru][api]: ---> Removed route from unit 1d913e0910
  3. 2014-12-11 16:36:17 -0200 [tsuru][api]: ---- Removing 1 old unit ----
  4. 2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Starting gunicorn 18.0
  5. 2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Listening at: http://0.0.0.0:8100 (51)
  6. 2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Using worker: sync
  7. 2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Booting worker with pid: 60
  8. 2014-12-11 16:36:28 -0200 [tsuru][api]: ---> Removed old unit 1/1

缺省只会显示日志的最后十行。可以通过-l/—lines参数去查看更多的日志:

  1. $ tsuru app-log -a <appname> --lines 100

过滤

你可以通过单元或者源去过滤日志。按单元过滤,可以使用-u/—unit参数:

  1. $ tsuru app-log -a <appname> --unit 11f863b2c14b
  2. 2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Starting gunicorn 18.0
  3. 2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Listening at: http://0.0.0.0:8100 (51)
  4. 2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Using worker: sync

.. 参阅:: 要获得单元id,可以使用tsuru app-info -a <appname>命令。

可以通过进程或者tsuru api发送日志。通过源过滤,需要使用-s/—source参数:

  1. $ tsuru app-log -a <appname> --source app
  2. 2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Starting gunicorn 18.0
  3. 2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Listening at: http://0.0.0.0:8100 (51)
  4. 2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Using worker: sync
  5. $ tsuru app-log -a <appname> --source tsuru
  6. 2014-12-11 16:36:17 -0200 [tsuru][api]: ---> Removed route from unit 1d913e0910
  7. 2014-12-11 16:36:17 -0200 [tsuru][api]: ---- Removing 1 old unit ----

实时日志

tsuru app-log有一个-f/—follow参数,可以持续等待新的日志而不停止。有了这个参数就可以看到应用的实时行为,这对于调试问题很有帮助。

  1. $ tsuru app-log -a <appname> --follow

可以通过Ctrl-C结束回话。

局限

tsuru原生日志系统设计的目的是快速且能显示应用最近的日志。tsuru不会保存应用所有类型的日志。想要保存所有的日志,就得适用外部的日志收集工具。

使用外部的日志收集器

你也可以将日志发给外部的日志收集器。tsuru使用Syslog协议。要使用Syslog,你应当在应用中设置以下的环境变量:

  1. TSURU_SYSLOG_SERVER
  2. TSURU_SYSLOG_PORT (probably 514)
  3. TSURU_SYSLOG_FACILITY (something like local0)
  4. TSURU_SYSLOG_SOCKET (tcp or udp)

可以用tsuru env-set命令在应用中设置这些环境变量:

  1. $ tsuru env-set -a myapp TSURU_SYSLOG_SERVER=myserver.com TSURU_SYSLOG_PORT=514 TSURU_SYSLOG_FACILITY=local0 TSURU_SYSLOG_SOCKET=tcp

原文: http://doc.oschina.net/tsuru-paas?t=52827