2017-04-27 13 views
0

コンソールから基本情報行を記録する際に問題があります。ローカルでは、これは正常に動作し、すべてがWebやコンソールからログに記録されます(エラー、情報メッセージ)。しかし、サーバでは、エラーログはうまく動作しますが、私は自分でloggerを呼び出していくつかの情報メッセージを記録しようとすると動作しません。サーバー上のLaravelコンソールでMonologが動作しない

私は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->getMonolog()->addAlert($message); 
$this->log->getMonolog()->addCritical($message); 
$this->log->getMonolog()->addDebug($message); 
$this->log->getMonolog()->addError($message); 
$this->log->getMonolog()->addWarning($message); 

そして、それは誤りプレフィックス(情報以外のすべて)ですべてのメッセージをログに記録します

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

答えて

0

は、私は複数のメッセージタイプを追加し、それを考え出しました。だから私は.envファイルに見て、ログレベルについての次の行がありました:

APP_LOG_LEVEL=notice 

は、「デバッグ」に、今それがうまく働いていることを変更しました。

関連する問題