【问题标题】:Lumen Debug Log not working as expectedLumen 调试日志未按预期工作
【发布时间】:2018-11-04 08:42:06
【问题描述】:

我正在使用 Lumen 5.3,但我不确定我应该如何实现调试模式。

在 .env 中,我有这个:

APP_DEBUG=true

在我的脚本中我有这个:

Log::debug("Test"); 

所以当我运行正确的脚本时它会登录 storage/logs/lumen.log。

我设置了 APP_DEBUG=false 的值,但我放置的 Log::debug 行一直在 lumen.log 中记录。如何关闭调试级别的日志或任何其他方式来实现我期望发生的事情?

【问题讨论】:

  • 您期望发生什么? APP_DEBUG 用于指示是否应在页面上看到错误(true 将在有错误的页面上显示错误调用堆栈,false 将仅返回错误代码状态页面)
  • 我明白了。有没有办法在登录 lumen.log 时停止 Log::debug?

标签: php laravel lumen monolog


【解决方案1】:

流明更新

抱歉我没有正确阅读,对于 Lumen 5.3,您可以覆盖 bootstrap/app.php 内部的日志记录,推送您自己的日志处理程序。

在您的 app.php 文件底部添加以下内容,在 return $app 之前:

use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Monolog\Formatter\LineFormatter;
...
$app->configureMonologUsing(function($monolog) {
    $handler = new StreamHandler(storage_path('logs/lumen.log'), Logger::ERROR);
    $handler->setFormatter(new LineFormatter(null, null, true, true));
    $monolog->pushHandler($handler);

    return $monolog;
});

在代码示例中,您将只记录错误级别。您将需要导入命名空间。

要完全禁用日志记录,您可以执行以下操作

$app->configureMonologUsing(function($monolog) {
    $monolog->pushHandler(new NullHandler(Logger::DEBUG));

    return $monolog;
});

离开原来的 Laravel 5.3 答案

对于 laravel 5.3,日志级别在 app/config.php 中配置。

默认一般是

'log_level' => env('APP_LOG_LEVEL', 'debug'),

因此,如果您在生产服务器上将 .env 中的 APP_LOG_LEVEL 更改为 error 之类的东西,它不会记录整个应用程序中散布的调试消息。

在你的 .env 中

APP_LOG_LEVEL=error

【讨论】:

  • 抱歉,这是 Lumen 5.3?
  • 这是否意味着在我的脚本中,如果我放置所有日志级别并添加您发送的配置,则只有 Log::error 将起作用,或者 Lumen 文档中的错误以下的所有其他日志级别?
  • 重要性顺序为debug, info, notice, warning, error, critical, alert, emergency。所以如果你输入Logger::ERROR,调试、信息、通知和警告将被忽略,只会写入错误、关键、警报和紧急情况。
  • 我还有一个问题。我将如何关闭日志记录?
  • 那是另一个问题 ;-) 我更新了我的答案。
猜你喜欢
  • 2021-03-22
  • 1970-01-01
  • 2023-01-13
  • 2018-08-15
  • 1970-01-01
  • 1970-01-01
  • 2015-06-06
  • 2021-11-28
  • 1970-01-01
相关资源
最近更新 更多