日志等级控制

在最新版本中底层已规范了日志等级控制相关的特性,并定义了相关常量。可使用下列方法设置log_leveltrace_flags选项:

  • Swoole\Server->set方法
  • Swoole\Coroutine::set静态方法
  • Swoole\Async::set静态方法
$serv->set([
    'log_level' => SWOOLE_LOG_TRACE,
    'trace_flags' => SWOOLE_TRACE_ALL,
]);

日志等级

可以通过设置log_level控制日志等级。底层支持6种错误日志等级:

  • SWOOLE_LOG_DEBUG:调试日志,仅作为内核开发调试使用
  • SWOOLE_LOG_TRACE:跟踪日志,可用于跟踪系统问题,调试日志是经过精心设置的,会携带关键性信息
  • SWOOLE_LOG_INFO:普通信息,仅作为信息展示
  • SWOOLE_LOG_NOTICE:提示信息,系统可能存在某些行为,如重启、关闭
  • SWOOLE_LOG_WARNING:警告信息,系统可能存在某些问题
  • SWOOLE_LOG_ERROR:错误信息,系统发生了某些关键性的错误,需要即时解决

其中SWOOLE_LOG_DEBUGSWOOLE_LOG_TRACE两种日志,必须在编译swoole扩展时使用--enable-swoole-debug--enable-trace-log后才可以使用。正常版本中即使设置了log_level = SWOOLE_LOG_TRACE也是无法打印此类日志的。

跟踪标签

线上运行的服务,随时都有大量请求在处理,底层抛出的日志数量非常巨大。可使用trace_flags设置跟踪日志的标签,仅打印部分跟踪日志。trace_flags支持使用|或操作符设置多个跟踪项。

$serv->set([
    'log_level' => SWOOLE_LOG_TRACE,
    'trace_flags' => SWOOLE_TRACE_SERVER | SWOOLE_TRACE_HTTP2,
]);

底层支持以下跟踪项,可使用SWOOLE_TRACE_ALL表示跟踪所有项目:

  • SWOOLE_TRACE_SERVER
  • SWOOLE_TRACE_CLIENT
  • SWOOLE_TRACE_BUFFER
  • SWOOLE_TRACE_CONN
  • SWOOLE_TRACE_EVENT
  • SWOOLE_TRACE_WORKER
  • SWOOLE_TRACE_REACTOR
  • SWOOLE_TRACE_PHP
  • SWOOLE_TRACE_HTTP2
  • SWOOLE_TRACE_EOF_PROTOCOL
  • SWOOLE_TRACE_LENGTH_PROTOCOL
  • SWOOLE_TRACE_CLOSE
  • SWOOLE_TRACE_HTTP_CLIENT
  • SWOOLE_TRACE_COROUTINE
  • SWOOLE_TRACE_REDIS_CLIENT
  • SWOOLE_TRACE_MYSQL_CLIENT
  • SWOOLE_TRACE_AIO
  • SWOOLE_TRACE_ALL