Monolog在服务器上的Laravel Console中不起作用

时间:2017-04-27 09:43:09

标签: php laravel laravel-5 laravel-5.4

我在从控制台记录一些基本信息行时遇到问题。在本地,这工作正常,从Web和控制台记录所有内容(错误,信息消息)。但是在服务器上,错误记录工作正常,但是当我自己调用logger并尝试记录某些信息时它不起作用。

我使用的是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');

1 个答案:

答案 0 :(得分:0)

想出来,我添加了多种消息类型:

$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

将其更改为“debug”,现在工作正常。