【问题标题】:How to disable Laravel 5 log file?如何禁用 Laravel 5 日志文件?
【发布时间】:2016-01-07 10:34:08
【问题描述】:

我的 Laravel 5 网站在具有 1 GB 磁盘空间的共享主机上运行。但现在我有大约 100 MB 的日志文件。如何在 Laravel 5禁用日志文件

【问题讨论】:

标签: php laravel laravel-5


【解决方案1】:

为了完全禁用日志记录,您需要覆盖 Laravel 设置的默认日志处理程序。你可以很容易地做到这一点

$nullLogger = new NullHandler();
\Log::getMonolog()->setHandlers(array($nullLogger));

您需要在处理请求之前尽早致电,例如你可以在你的 bootstrap/app.php 中做到这一点:

$app->configureMonologUsing(function($monolog) {
  $nullLogger = new \Monolog\Handler\NullHandler();
  $monolog->setHandlers(array($nullLogger));
});

return $app;

【讨论】:

  • 没有配置解决方案吗?
【解决方案2】:

如果您的日志非常大,那么要么您记录了很多日志,要么您的应用程序抛出了很多错误。您应该首先检查日志,看看是否可以减少写入的数据。

您还可以切换到每日日志记录,然后执行删除旧日志文件的工作。

接下来要做的是将您的日志记录配置更新为每天而不是config/app.php 中的默认单项

Laravel 将处理每天轮换文件并在 5 天后删除旧的日志文件,或者如果您需要更多保留,则使用 app.max_log_files 的值。

【讨论】:

    【解决方案3】:

    我知道这有点老了,但是:

    在 config/logging.php 中: 在channels 部分添加这些:

    'none' => [
        'driver' => 'monolog',
        'handler' => \Monolog\Handler\NullHandler::class,
    ],
    

    然后更新您的 .env 文件以使用此记录器:

    LOG_CHANNEL=none
    

    一切都应该正常工作。

    【讨论】:

    • 请注意,NullHandler 的全类名称是\Monolog\Handler\NullHandler
    • 如果我只使用 NullHandler::class 或完整的 \Monolog\Handler\NullHandler 会有什么不同吗?
    • @user3548161 没有
    • 我在 Laravel 5.8.38 上。它的确有所作为。当我在没有完全限定类名的情况下使用NullHandler 时,它不起作用。它仍然创建了laravel.log,它记录了一个额外的异常,但没有在 Whoops 中呈现它:Unable to create configured logger. Using emergency logger. {"exception":"[object] (InvalidArgumentException(code: 0): NullHandler must be an instance of Monolog\\Handler\\HandlerInterface at <snip>/Illuminate/Log/LogManager.php:328。我会相应地编辑答案。
    • @TymurValiiev Doh,你是对的。我知道要查找它,但我仍然忽略了其他处理程序是通过顶部的 use 语句引用的。我应该为NullHandler 做同样的事情。我会保留我的评论和编辑,以防它帮助某人。
    【解决方案4】:

    每日最大日志文件数

    当使用每日日志模式时,Laravel 默认只保留five days 的日志文件。如果要调整保留文件的数量,可以在app 配置文件中添加log_max_files 配置值:

    配置 >> app.php

    'log_max_files' => 30
    

    更多:https://laravel.com/docs/5.5/errors

    【讨论】:

    • 30 是什么意思? 30 兆字节?
    • 没有@Vahid2015,意思是一个月30个文件
    【解决方案5】:

    对我来说,wamp 中的文件夹 'tmp' 增长了 15 giga! 经过一番研究,我发现原因是 xdebug 扩展 我只是将其调整为不发送调试信息,来自php.ini

    xdebug.profiler_enable = 0
    

    【讨论】:

      【解决方案6】:

      您可以通过注释以下行来禁用写入操作 Log:::

      Log::useFiles(storage_path().'/logs/laravel.log');
      

      start/global.php

      但是首先,您应该找出为什么您的日志文件那么大? 其次,对您的文件具有某种归档功能也会有所帮助。也许一天两次。

      希望对您有所帮助。祝你好运!

      【讨论】:

      • 我的站点受到 DDos 攻击,并且日志文件 (50GB) 已满,导致我的服务器停止工作。通过停止编写此文件,我能够专注于解决方案。
      【解决方案7】:

      是的,你需要编辑核心 laravel 文件才能不保存日志文件..

      去vendor->laravel->framework->src->Illuminate->Log->Writer.php 然后注释掉函数 __call 中的所有代码,如下所示。

      public function __call($method, $parameters)
      {
          // if (in_array($method, $this->levels))
          // {
          //  call_user_func_array(array($this, 'fireLogEvent'), array_merge(array($method), $parameters));
      
          //  $method = 'add'.ucfirst($method);
      
          //  return $this->callMonolog($method, $parameters);
          // }
      
          // throw new \BadMethodCallException("Method [$method] does not exist.");
      }
      

      您的日志将永远不会被保存。

      【讨论】:

      • 编辑供应商文件是一个非常糟糕的主意。下一次作曲家更新/安装将丢失您的所有修改。
      • 由于第一条评论中所述的原因,这是一个糟糕的建议。
      猜你喜欢
      • 2014-10-10
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 2017-01-14
      • 2015-08-06
      • 2017-11-10
      • 1970-01-01
      • 2015-08-08
      相关资源
      最近更新 更多