日志等级控制
最后更新于: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`
';