もしそうなら、どのようにそれを行うことができますか?デフォルトでは、L4 はテキスト ファイルに書き込みます。Monolog はgithubページでデータベースにログを記録できることに気付きました。
5 に答える
そうです、routes.php にすべてを記録するリスナーを作成できます。
Event::listen('laravel.log', function($type,$message)
{
$log = new Log();
$log->message = $message;
$log->type = $type;
$log->update;
});
あるいは、エラー 400 と 500 のみをログに記録したい場合は、エラー 404 と 500 をリッスンする Routes.php ファイルに Log イベントがあり、このイベント リスナーに独自のコードを記述できます。したがって、Log というモデルが定義されていると仮定すると、
Event::listen('404', function()
{
$error = "404: " . URL::full();
Log::error($error);
$update = new Log();
$update->error = $error;
$update->update;
return Response::error('404');
});
Event::listen('500', function()
{
Log::error($error);
$update = new Log();
$update->error = $error;
$update->update;
return Response::error('500');
});
見出しをさらに読むとわかるように、Monolog は Redis、MongoDB、および CouchDB への書き込みをネイティブにサポートしています。これら 3 つはすべて、かなり書き込みが多い (Redis の場合は非常に書き込みが多い) ユースケースをサポートしています。MySQL にログを記録することは、世界で最も優れたアイデアではないため、MySQL は存在しません。
ただし、本当にやりたい場合は、独自のハンドラーの作成に関するドキュメントを確認できます。このドキュメントでは、PDO ハンドラーを作成して使用し、SQL データベースに書き込む方法について説明しています: https://github.com/Seldaek/monolog/blob /master/doc/extending.md - 私はまだそれは悪い考えだと思いますが、おそらくユースケースはそれを正当化します.
プロジェクトで同じ要求があったため、Monolog のハンドラーを作成して、ログ出力を MySQL に書き込みました。これは MIT ライセンスの下でリリースされ、composerを通じて、またはGitHubで直接入手できます。試してみる価値があるかもしれません。