Laravel fluentdログパッケージリリースしました

Posted: 2015-11-08 00:12 | 
Laravelをつかったプロジェクトでfluentdを利用するために作りました。
ありそうでなかったので、大規模系のプロジェクトでLaravelを利用している企業でも
利用するケースが多いのかもしれません。
fluentdはこちら

Laravel-FluentLogger
特に難しい実装をしているわけではありませんので、簡単に利用できます。

インストール方法

いつものと同じです。
$ composer require ytake/laravel-fluent-logger
または、composer.jsonに記述します。
"require": {
  "ytake/laravel-fluent-logger": "~0.0"
},

コンフィグ

下記のうち、どれを利用しても構いません。
$ php artisan vendor:publish
$ php artisan vendor:publish --tag=log
$ php artisan vendor:publish --provider="Ytake\LaravelFluent\LogServiceProvider"
設置されるファイルは、fluentdへ接続するための情報だけです。
オプションが必要な場合は設定できるようになっています。
return [
    'host' => env('FLUENTD_HOST', '127.0.0.1'),
    'port' => env('FLUENTD_PORT', 24224),
    'options' => [],
];
オプションはこちらを参照ください。
このパッケージで用意しているのは、
通常のファイルログや、シテムログに加えて、fluentdへのログ出力も行う、
pushHandlerで出力先を追加するものと、
メインのログをfluentdnへ変更するもの、の2種類です

fluentdへのログ出力を追加

サービスプロバイダにfluent.handlerとして登録していますので、
これを利用して出力追加を行います。
public function bbot()
{
    $this->app['fluent.handler']->pushHandler();
}
サービスプロバイダで実行すると、アプリケーション配下に出力されるログに加えて、
fluentdにも出力されます。

メインのログをfluentdへ変更

上記の方法は、あくまでも通常のLaravelのログの出力先にfluentdを加えるだけですが、
アプリケーションのログ、すべてをfluentdに変更できます。
アプリケーション配下のHttp\Kernelクラス、Console\Kernelクラスで、
bootstrappersプロパティをオーバーライドし、
Illuminate\Foundation\Bootstrap\ConfigureLogging をパッケージのクラスへ変更します。
(*vendor配下ではなくて、app/配下です)

http\Kernel
    protected $bootstrappers = [
        'Illuminate\Foundation\Bootstrap\DetectEnvironment',
        'Illuminate\Foundation\Bootstrap\LoadConfiguration',
        \Ytake\LaravelFluent\ConfigureLogging::class,
        'Illuminate\Foundation\Bootstrap\HandleExceptions',
        'Illuminate\Foundation\Bootstrap\RegisterFacades',
        'Illuminate\Foundation\Bootstrap\RegisterProviders',
        'Illuminate\Foundation\Bootstrap\BootProviders',
    ];
Console\Kernel
    protected $bootstrappers = [
        'Illuminate\Foundation\Bootstrap\DetectEnvironment',
        'Illuminate\Foundation\Bootstrap\LoadConfiguration',
        \Ytake\LaravelFluent\ConfigureLogging::class,
        'Illuminate\Foundation\Bootstrap\HandleExceptions',
        'Illuminate\Foundation\Bootstrap\RegisterFacades',
        'Illuminate\Foundation\Bootstrap\SetRequestForConsole',
        'Illuminate\Foundation\Bootstrap\RegisterProviders',
        'Illuminate\Foundation\Bootstrap\BootProviders',
    ];
次に、app/config.phpのlogをfluentへ変更します。
'log' => 'fluent',
これでデフォルトでfluentdへログが送られます。
アプリケーション配下などにログを出力したい場合は、
Logファサードなどを利用してuseFilesメソッドなどをコールしてください。
 
use Psr\Log\LoggerInterface;

class Action 
{
    public function publish(LoggerInterface $log)
    {
        $log->useFiles(storage_path('logs/application.log'));
        $log->info('hello fluentd and files', ['This is Laravel Logger']);
    }
}
fluentdにはLaravelのログに合わせるのて、次のように記述しておけばいいでしょう。
#開発の場合

  type stdout

#本番環境など

  type stdout

最適化

オプションとして、app/compile.phpに下記のコードを追加すると、
optimizeコマンドでパッケージのソースコードやfluent/loggerが含まれるようになります。
'providers' => [
    //
    \Ytake\LaravelFluent\LogServiceProvider::class,
],

about ytake

執筆に参加しています


Laravel お役立ち情報

share



このエントリーをはてなブックマークに追加

Categories

laravel 45

DTM 0

music 0

PHP全般 31

0

JAPAN 1

WORLD 1

javascript 4

RDBMS 1

NoSQL 1

NewSQL 1

Recent Posts

Ad

comments powered by Disqus

GitHub

Social Links

Author


クリエイティブ・コモンズ・ライセンス
Yuuki Takezawa 作『Ytake Blog』はクリエイティブ・コモンズ 表示 - 非営利 4.0 国際 ライセンス で提供されています。

© ytake/comnect All Rights Reserved. 2014