log-viewer - Laravel の高速で美しいログ ビューアー

(Fast and beautiful Log Viewer for Laravel)

Created at: 2022-08-15 15:02:33
Language: PHP
License: MIT

Log Viewer
使いやすく、速く、美しく

特徴| インストール| 構成| 承認| トラブルシューティング| クレジット

パッケージ担当者 パッケージ担当者 Packagist の PHP Laravel バージョン

ログビューア明暗

OPcodes の Log Viewerは、 Laravelアプリの完璧なコンパニオンです。

探しているものを見つけようとして生の Laravel ログ ファイルを読む必要はもうありません。

Log Viewer を使用すると、個々のログ エントリをすばやく明確に確認し、Laravel ログをすばやく検索フィルタリング、および理解することができます。無料で簡単にインストールできます。

📺 Log Viewer 機能の一部を紹介する4 分間の短いビデオをご覧ください。

特徴

  • 📂
    storage/logs
    ディレクトリ内のすべての Laravel ログを表示し、
  • 🔍 ログを検索し、
  • 🎚 ログ レベル (エラー、情報、デバッグなど) でフィルター処理し、
  • 🔗 個々のログ エントリへの共有可能なリンク
  • 🌑 ダークモード
  • 💾 UI からログ ファイルをダウンロードして削除します。
  • ☑️ Horizo​​nログのサポート、
  • もっと...

始めましょう

要件

  • PHP 8.0+
  • ララベル 8+

インストール

composer 経由でパッケージをインストールするには、以下を実行します。

composer require opcodesio/log-viewer

使用法

インストールが完了すると、ブラウザから直接Log Viewerにアクセスできるようになります。

デフォルトでは、アプリケーションは次の場所で入手できます

{APP_URL}/log-viewer

(例:

https://my-app.test/log-viewer
)

構成

設定ファイル

構成ファイルを公開するには、次を実行します。

php artisan vendor:publish --tag="log-viewer-config"

ルートとミドルウェア

config/log-viewer.php で、デフォルト ルートとそのミドルウェアを簡単に変更できます。

以下の構成を参照してください。

    /*
    |--------------------------------------------------------------------------
    | Log Viewer Route
    |--------------------------------------------------------------------------
    | Log Viewer will be available under this URL.
    |
    */

    'route_path' => 'log-viewer',

    /*
    |--------------------------------------------------------------------------
    | Log Viewer route middleware.
    |--------------------------------------------------------------------------
    | The middleware should enable session and cookies support in order for the Log Viewer to work.
    | The 'web' middleware will be applied automatically if empty.
    |
    */

    'middleware' => ['web'],

認可

ログインしているユーザー、または動作中のログ ファイルに基づいて、さまざまなアクセス権を持つように構成できます。

権限とその設定方法は次のとおりです。

ログ ビューアー アクセスの承認

ログ ビューアにアクセスできるユーザーをいくつかの方法で制限できます。

「auth」コールバック経由

次のように、

LogViewer::auth()
内のメソッドにカスタム認証コールバックを提供することで、ログ ビューアへのアクセスを制限できます。
AppServiceProvider

use Opcodes\LogViewer\Facades\LogViewer;

/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
    LogViewer::auth(function ($request) {
        // return true to allow viewing the Log Viewer.
    });

    // Here's an example:
    LogViewer::auth(function ($request) {
        return $request->user()
            && in_array($request->user()->email, [
                // 'john@example.com',
            ]);
    });
}

「viewLogViewer」ゲート経由

Log Viewer へのアクセスを制限するもう 1 つの簡単な方法は、Laravel Gatesを使用することです。クラス

viewLogViewer
で承認ゲートを定義するだけです。
App\Providers\AuthServiceProvider

use App\Models\User;
use Illuminate\Support\Facades\Gate;
 
/**
 * Register any authentication / authorization services.
 *
 * @return void
 */
public function boot()
{
    $this->registerPolicies();
 
    Gate::define('viewLogViewer', function (?User $user) {
        // return true if the user is allowed access to the Log Viewer
    });
}

ミドルウェア経由

で一般的なミドルウェアを使用して、ログ表示ルートに認証を簡単に追加できます。

auth
config/log-viewer.php

アプリケーションで既定の認証ソリューションを使用しない場合は、

auth.basic
HTTP 基本認証ミドルウェアを使用できます。

注:デフォルトでは、

auth.basic
ミドルウェアは、ユーザー データベース テーブルの電子メール列がユーザーの「ユーザー名」であると想定します。

auth
以下のミドルウェア構成を参照してください。

    /*
    |--------------------------------------------------------------------------
    | Log Viewer route middleware.
    |--------------------------------------------------------------------------
    | The middleware should enable session and cookies support in order for the Log Viewer to work.
    | The 'web' middleware will be applied automatically if empty.
    |
    */

    'middleware' => ['web', 'auth'],

Spatie パーミッションを使用した承認については、このディスカッションを参照してください

ログ ファイルのダウンロードの承認

Laravel Gatesを介してログ ファイルをダウンロードする機能を制限できます。クラス

downloadLogFile
で承認ゲートを定義するだけです。
App\Providers\AuthServiceProvider

use App\Models\User;
use Opcodes\LogViewer\LogFile;
use Illuminate\Support\Facades\Gate;

/**
 * Register any authentication / authorization services.
 *
 * @return void
 */
public function boot()
{
    $this->registerPolicies();
 
    Gate::define('downloadLogFile', function (?User $user, LogFile $file) {
        // return true if the user is allowed to download the specific log file.
    });
}

ログファイル削除の承認

Laravel Gatesを介してログファイルを削除する機能を制限できます。クラス

deleteLogFile
で承認ゲートを定義するだけです。
App\Providers\AuthServiceProvider

use App\Models\User;
use Opcodes\LogViewer\LogFile;
use Illuminate\Support\Facades\Gate;

/**
 * Register any authentication / authorization services.
 *
 * @return void
 */
public function boot()
{
    $this->registerPolicies();
 
    Gate::define('deleteLogFile', function (?User $user, LogFile $file) {
        // return true if the user is allowed to delete the specific log file.
    });
}

トラブルシューティング

ここでは、いくつかの一般的な問題と解決策を示します。

問題: ブラウザのコンソールに「Livewire が定義されていません」またはその他のエラーが表示される

これはほとんどの場合、プロジェクトが などのサブフォルダーから提供されていることが原因

example.com/your-laravel-project/log-viewer
です。

デフォルトでは、Livewire は のようにドメインのルートからリソースをロードしようとします

example.com/livewire/livewire.js
が、それがプロジェクトのサブフォルダーの外にある場合は、別の asset_url を設定する必要があります。詳細については、こちらをご覧ください。

幸いなことに、修正は簡単です。

  1. Livewire 構成を公開します。
php artisan livewire:publish --config
  1. asset_url
    ファイルのオプションを
    config/livewire.php
    アプリのサブドメインに設定します。
    'asset_url' => '/your-laravel-project',

問題: ログがロードされない

現時点では、ログ ビューアーは次のようなLaravel ログのみを処理できます。

[2022-08-25 11:16:17] local.DEBUG: Example log entry for the level debug {"one":1,"two":"two","three":[1,2,3]}
Multiple lines are allowed
and will be picked up as contents
of the same log entry.

ログの構造が異なる場合は、カスタム ログ形式のサポートが出荷されるまで待つ必要があります。それ以外の場合は、ログ形式を Laravel のデフォルトに調整してください。

スクリーンショット

スクリーンショットとログ ビューアーの機能の詳細については、リリース ブログの投稿を参照してください。

変更ログ

最近の変更点の詳細については、 CHANGELOGを参照してください。

貢献する

詳細については、貢献を参照してください。

セキュリティの脆弱性

セキュリティの脆弱性を報告する方法については、セキュリティ ポリシーを確認してください。

クレジット

ライセンス

MIT ライセンス (MIT)。詳細については、ライセンス ファイルを参照してください。