Laravel 5.6 升级导致日志记录中断

Laravel 5.6 Upgrade caused Logging to break

嘿嘿!

所以我最近接到任务,要 Laravel 5.2 达到 5.6。它似乎很好......直到我尝试做一个 \Log::info()。每次我 运行 那个,我都会得到一个很大的错误,但最后,它仍然打印到日志中。我看到了关于创建 config/logger.php 的 5.6 文档。我从 github 那里拿了一份新的副本。在那之后我做的唯一一件事就是为 LOG_CHANNEL 设置一个 env 变量。这是我得到的错误:

[2018-03-02 08:28:59] laravel.EMERGENCY: Unable to create configured logger. Using emergency logger. {"exception":"[object] (InvalidArgumentException(code: 0): Log [] is not defined. at I:\xampp\htdocs\mtm\vendor\laravel\framework\src\Illuminate\Log\LogManager.php:181) [ ....

我在 Laravel 5.2 和 5.6 之间进行了文件比较。我没有看到任何会破坏日志记录功能的跳出。

有没有人 运行 通过 Laravel 升级来解决这个问题?

将此文件添加到您的配置文件夹 https://github.com/laravel/laravel/blob/5.6/config/logging.php

并将其添加到您的 .env 文件中 LOG_CHANNEL=stack

之后别忘了运行php artisan config:clear命令。

我最近在我的开发机器中遇到了同样的错误(奇怪的是在生产机器中没有)。在我的开发机器中,我同时安装了 php 7.1php 7.2。查看phpinfo(),我发现7.1是默认版本,所以我决定切换到7.2。

sudo a2dismod php7.1
sudo a2enmod php7.2
sudo systemctl restart apache2

这并没有解决问题(但也许是其中的一部分)。

在尝试了网络上所有建议的几个小时后,我通过以下方式找到了解决方案:

  1. 正在检查存储文件夹中的所有权限。
  2. 在我的项目文件夹中,清除所有缓存和配置。
  3. 正在转储所有作曲家自动加载文件。

详细:

cd your_project_full_path
sudo chmod -R 0775 storage
sudo chown -R www-data:www-data storage
php artisan config:clear
php artisan view:clear
php artisan route:clear
composer dump-autoload

在这之后,我再也没有问题了。也许尝试 0755 作为存储文件夹的权限。希望这对您有所帮助!

经过两天的研究,我在 Github 上找到了解决方案。

如果您正在使用 Laravel 5.5.4 到 Laravel 5.6.*,那么您只需安装和配置 Graham Campbell 的异常包即可。

Link: https://github.com/GrahamCampbell/Laravel-Exceptions

这对我来说非常适用于 Mac OSX (PHP 7.1.7), Laravel 5.6.22

我的初始错误:

2018-05-25 14:35:07] laravel.EMERGENCY: Unable to create configured logger. 

Using emergency logger. {"exception":"[object] (InvalidArgumentException(code: 0): Log [] is not defined. at /Users/pro/Sites/metiwave/vendor/laravel/framework/src/Illuminate/Log/LogManager.php:181)

使用 upgrade guide ,并将 logging.php 添加到您的配置文件中。

我遇到了同样的问题,并尝试按照您的方式做所有事情,但没有成功。

最后发现是缓存配置的问题,清除掉就好了:

php artisan config:clear

由于我的 laravel 版本从 5.3 升级到 5.7,我遇到了同样的问题。但是在搜索了一些薄荷糖之后,我找到了解决方案。 您只需按照以下步骤操作即可。

  1. config 文件夹中创建 logging.php 文件。
  2. 从 Laravel 的 Official Link 中复制代码。
  3. 将此代码粘贴到您的 logging.php 文件中。
  4. 运行 这个命令 -- php artisan config:clear

全部完成。快乐编码:)

在我的例子中,APP_LOG= .env 文件中是空白的,所以我将其保存为 APP_LOG=single 并且有效。

我遇到了同样的问题,原来我不小心移动了配置文件夹。如果你发现自己遇到同样的情况,(可能和我一样尴尬)把它移回你项目的根文件夹。

此致

好的,我知道了 看看官方库,复制log config配置代码:

link :https://github.com/laravel/laravel/blob/5.6/config/logging.php

在项目的配置目录中创建 logging.php 文件 将代码复制到

清除缓存:php artisan config:clear

就是这样。继续踩...