日志等级控制

最后更新于:2022-04-02 06:41:02

# 日志等级控制 [TOC] 在最新版本中底层已规范了日志等级控制相关的特性,并定义了相关常量。可使用下列方法设置`log_level`和`trace_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_DEBUG`和`SWOOLE_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`
';