Монолог не работает в Laravel Console на сервере

111
6

У меня возникли проблемы с записью некоторой базовой информационной строки из консоли. Локально это работает отлично, все регистрируется (ошибки, информационные сообщения) из Интернета и с консоли. Но на сервере журнал ошибок работает нормально, но когда я сам вызываю журнал и пытаюсь записать какое-то информационное сообщение, он не работает.

Я использую версию Laravel 5.4.

Это класс App\Console\Commands\DummyCommand для тестирования.

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Log\Writer as Log;

class DummyCommand extends Command
{
/**
* Create a new console command instance.
*
* @param \Illuminate\Log\Writer $log
* @return void
*/
public function __construct(Log $log)
{
parent::__construct();

$this->log = $log;
}

/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$message = "Some dummy message";
$this->info($message); // gets printed on console both locally and on server
$this->log->info($message);
$ret = $this->log->getMonolog()->addInfo($message);

dump($ret); // locally = true, server = false
if ($ret === false) {
throw new \Exception('Error while logging!'); // this log works fine both locally and on server
}
}
}

Я запускаю на сервере следующее:

php artisan dummy // prints "Some dummy message" and loggs error message "Error while logging!"
php artisan schedule:run // same thing as above

Любая идея, почему это не работает? Права доступа к папке хранилища подходят для всех папок и файлов. Сообщения об ошибках (исключения) регистрируются, а информационные сообщения - нет.

Отредактировано: Это работает, мне нужно добавить следующую строку перед вызовом $this-> log-> info(); но я не буду использовать во всех командах, и каждый раз вам нужно установить путь к файлу журнала. (источник: https://laracasts.com/discuss/channels/general-discussion/logging-in-l5/replies/11771)

$this->log->useDailyFiles(storage_path().'/logs/laravel.log');

спросил(а) 2021-01-27T21:42:28+03:00 8 месяцев, 3 недели назад
1
Решение
121

Выяснилось, я добавил несколько типов сообщений:

$this->log->getMonolog()->addAlert($message);
$this->log->getMonolog()->addCritical($message);
$this->log->getMonolog()->addDebug($message);
$this->log->getMonolog()->addError($message);
$this->log->getMonolog()->addWarning($message);

И он регистрирует все сообщения с префиксом ошибки (все, кроме информации). Поэтому я заглянул в файл.env, и появилась следующая строка о уровне журнала:

APP_LOG_LEVEL=notice

Изменено это для "отладки", и теперь он работает нормально.

ответил(а) 2021-01-27T21:42:28+03:00 8 месяцев, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема