laravel 5.3でカスタムログを作成し、実行時にいくつかの追加情報を追加する必要があります。MonologとLaravelを使用してランタイムでログフォーマットを変更する
これまでのところ、私はそれをやっていましたが、私ができることは、ログの新しいインスタンスを追加することでコードが機能しないためです。
私のハンディキャップは、私が戻っていかなければならないか、これが可能であれば、ロギングシステムの現在のハンドラであり、単純にフォーマット変更を渡すことです。
以下のコードは、フォーマット行を変更することができますが、一度だけ変更することができます。
私がもう一度それを実行すると、行の複製を開始し、それ以外の方法でハンドラを作成するか、適切な既存のものを使用します。
$maxFiles = config('app.log_max_files');
$path = storage_path('/logs/cprsync.log');
// Really I don't need this because this are on Laravel App, but with this method y can create a $handler for modify format
$handler = new RotatingFileHandler($path, is_null($maxFiles) ? 5 : $maxFiles, config('app.log_level'));
(is_null(config('cprsync.activejob'))) ? $job = '' : $job=' ['.config('cprsync.activejob').']';
$logFormat = "[%datetime%] [%level_name%]".$job.": %message% %context% %extra%\n";
$formatter = new LineFormatter($logFormat,null,true,true);
$handler->setFormatter($formatter); // What I really want is to make this change ...
// Push handler
$log->getMonolog()->pushHandler($handler);
あなたの答えは質問に答えることはできませんが、別の質問やその他の回答につながります。私は、ログの追加クラスを行うにはパスを求めていませんが、ログの形式だけを変更する可能性については、既にアプリケーションに存在します。私はまた、修正がすでに私のために働いていることを示しました。ありがとうございました – abkrim
ええ、私はあなたが投稿した後、ほんの数秒後にそれを理解しました。私の意見では、後で見つけて拡張して修正する方が簡単なので、いくつかのログラインでいくつかの魔法を使うのではなく、明示的なクラスを宣言する方が良いでしょう。あなたの質問にまだ答えません;) – Loek