2016-09-09 9 views

答えて

0

実際に多くのことを行うようにLaravelロガーを設定することができます。私は前にそれをやった、とあなたのケースでは、このようなものになるだろう:

app('log')->getMonolog()->pushProcessor(function ($record) { 
    if (array_get($record, 'level_name') === 'DEBUG') { 
     // ... 
    } 

    return $record; 
}); 

メインキャッチです:あなたは、PHPで一貫して取得することは事実上不可能である情報、すなわちファイルを追加しようとしていると行には、ロギング機能を起動したコードが含まれています。あなたのケースではFacadeを使用してメソッドを呼び出しています。これはLaravelのログライターに解決され、次にMonologパッケージを呼び出し、プロセッサを起動します(これはClosureです)。あなたの道を辿ることを試みるのは、馬鹿なことです。

1)単純に状態ファイルと行のロギング、contextとしてログライターに渡す:

Log::debug('My debug message', ['file' => __FILE__, 'line' => __LINE__]); 

だから、私はそれを参照してください方法は、あなたは簡単にこれを行うには2つのオプションがあります2)おそらくあなたが知っているように、あなたのLaravelログにファイルと行の情報がある理由は、ロガー自体とは関係がありません。PHP例外の組み込みの__toStringメソッドがスタックトレースと共に出力されます。私たちが望むものを達成するためにそれを利用できるのであれば、どうしたらよいでしょうか?

Log::debug(new DebugInfo('My debug message')); 

をそして、あなたのログは次のようになります:

<?php 

class DebugInfo extends \Exception 
{ 
    public function __toString() 
    { 
     return 'Debug info "'.$this->getMessage().'" on file '.$this->getFile().':'.$this->getLine(); 
    } 
} 

そのように、あなたは、単に書くことができ、あなたがメッセージを送信するために探しているなら、サイドノートとして

[2016-09-09 09:21:29] local.DEBUG: Debug info "My debug message" on file /Users/tomasbuteler/Sites/frulact-presentations/app/Http/Controllers/PresentationController.php:15 

、デバッグの目的で自分自身に、私はLaravel DebugBar packageを試してみることをお勧めします。

関連する問題