ホームページ >PHPフレームワーク >Laravel >Laravelのエラーとログについて
次のチュートリアルコラムでは、laravel のエラーとログを紹介します (ログディレクトリとログファイル名はカスタマイズできます)。
#Loglaravel のログは monolog に基づいてカプセル化されます。 laravel はそれに対していくつかのことを行いました: monolog の addInfo などの関数を info のような関数に簡素化
useFiles と useDailyFiles の 2 つのパラメーターを追加し、ログの管理と切り取りを可能にしました。より簡単になりました。
<?php use Monolog\Logger; use Monolog\Handler\StreamHandler; use Illuminate\Log\Writer; class BLogger { // 所有的LOG都要求在这里注册 const LOG_ERROR = 'error'; private static $loggers = array(); // 获取一个实例 public static function getLogger($type = self::LOG_ERROR, $day = 30) { if (empty(self::$loggers[$type])) { self::$loggers[$type] = new Writer(new Logger($type)); self::$loggers[$type]->useDailyFiles(storage_path().'/logs/'. $type .'.log', $day); } $log = self::$loggers[$type]; return $log; } }この方法では、異なるログ データが異なるログ ファイルに保存されます。ログデータ情報も記録できます。
上記の Blogger クラスを使用して、必要なエラー情報を start/global.php
// 错误日志信息 App::error(function(Exception $exception, $code) { Log::error($exception); $err = [ 'message' => $exception->getMessage(), 'file' => $exception->getFile(), 'line' => $exception->getLine(), 'code' => $exception->getCode(), 'url' => Request::url(), 'input' => Input::all(), ]; BLogger::getLogger(BLogger::LOG_ERROR)->error($err); });
に記録します。
また start/global.phpLog::useDailyFiles(storage_path().'/logs/laravel.log', 30);
リアルタイム記録が必要ない場合、laravel にはアプリリクエストによって取得された SQL リクエストを取得するための DB::getQueryLog があります: ## 在filters.php中
App::after(function($request, $response)
{
// 数据库查询进行日志
$queries = DB::getQueryLog();
if (Config::get('query.log', false)) {
BLogger::getLogger('query')->info($queries);
}
}
リアルタイム記録が必要な場合 (つまり、ローカル ダイが出てくると、前のページの SQL リクエストも記録されます)、illuminate.query イベント
// 数据库实时请求的日志 if (Config::get('database.log', false)) { Event::listen('illuminate.query', function($query, $bindings, $time, $name) { $data = compact('query','bindings', 'time', 'name'); BLogger::getLogger(BLogger::LOG_QUERY_REAL_TIME)->info($data); }); }
Error# を監視する必要があります。 ##laravel すべてのエラーは、表示される前にグローバル App::error を通過します。
#したがって、インターフェイスを設計し、エラーが発生した場合でも json データが返されることを期待する場合、これを実行できます:
// 错误日志信息 App::error(function(Exception $exception, $code) { // 如果没有路径就直接跳转到登录页面 if ($exception instanceof NotFoundHttpException) { return Redirect::route('login'); } Log::error($exception); $err = [ 'message' => $exception->getMessage(), 'file' => $exception->getFile(), 'line' => $exception->getLine(), 'code' => $exception->getCode(), 'url' => Request::url(), 'input' => Input::all(), ]; BLogger::getLogger(BLogger::LOG_ERROR)->error($err); $response = [ 'status' => 0, 'error' => "服务器内部错误", ]; return Response::json($response); });
404 エラーを保持したい場合: App::missing(function($exception)
{
$response = [
'status' => 0,
'error' => "请求路径错误",
];
return Response::json($response);
});
以上がLaravelのエラーとログについての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。