我的日志配置如下:
'log' => [
'traceLevel' => getenv('YII_DEBUG') ? getenv('YII_TRACELEVEL') : 0,
'targets' => [
[
'class' => 'yiilogFileTarget',
'except' => ['yiidb*'],
'levels' => ['profile', 'trace', 'info', 'warning', 'error'],
'logFile' => '@app/log/app.log',
'logVars' => [],
'maxFileSize' => 1024 * 20,
],
],
],
但是当我调用所有不同级别的日志时,我似乎无法得到输出到我的app.log的跟踪。
这里是我们输入代码的地方,只是作为我如何调用日志的一个例子:
public function actionCreate() {
Yii::trace("trace");
Yii::info("info");
Yii::warning("warning");
Yii::error("error");
return;
和在app.log中找到的输出:
2016-10-24 19:15:58 [127.0.0.1][-][-][info][application] info
2016-10-24 19:15:58 [127.0.0.1][-][-][warning][application] warning
2016-10-24 19:15:58 [127.0.0.1][-][-][error][application] error
我已经玩了添加/从级别列表中删除级别,以及输出到codemixstreamlogTargets php://stdout和php://stderr,除了跟踪级别日志之外的一切似乎都像您期望的那样从配置中工作。看起来我做的是正确的,根据在权威Yii2指南中找到的文档。
也许我的目标中遗漏了什么?我在这里看到有人有类似的问题,但他们只是在他们的目标级别列表中缺少跟踪,并且没有回应他们是否解决了他们的问题。如果您能提供任何建议,我将非常感谢。
您是否在app/web/index.php中定义了YII_DEBUG
?
defined('YII_DEBUG') or define('YII_DEBUG', true);
代码
'traceLevel' => getenv('YII_DEBUG') ? getenv('YII_TRACELEVEL') : 0,
表示,如果没有定义YII_DEBUG
, traceLevel将为0。根据文档,traceLevel公共属性的定义如下:
应该有多少调用堆栈信息(文件名和行号)记录每条消息。如果大于0,则最多等于0所有的调用堆栈都将被记录。注意,只有应用程序调用堆栈计算。
在yourApp/web/index.php中设置YII_DEBUG
,或者修改traceLevel属性