10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Laravel5.6 - Slackでロギングできるようになったので雑に試してみる

Last updated at Posted at 2018-04-15

Qiita初投稿。
雑 of 雑で参ります。

環境
OS Windows
Laravel 5.6
PHP 7.2.4
筆者はxamppで行ってます。

Laravelでプロジェクトを作成する

laravel new project
とりあえずサクッとlaravelコマンドでプロジェクトを作成します。

適当にルーティングを決める

route/web.php

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

Route::get('/info', 'LogController@info')->name('info');
Route::get('/debug', 'LogController@debug')->name('debug');
Route::get('/warning', 'LogController@warning')->name('warning');
Route::get('/error', 'LogController@error')->name('error');

雑ですが、こんなもんです。
ロギングなので個人的によく使っているinfo, debug, warning, errorをピックアップしました。

LogControllerを作成する

とにかくシンプルにわかりやすくするため、特になんの捻りもしません。
/debug みたいにURL直打ちしたらlogが出るようにします。

app/Http/Controller/LogController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Log;
use App\Http\Controllers\Controller;

class LogController extends Controller
{
    public static function info()
    {
    	Log::info('Slack Test - Info');

    	return view('welcome');
    }

    public static function debug()
    {
    	Log::debug('Slack Test - Debug');

    	return view('welcome');
    }

    public static function warning()
    {
    	Log::warning('Slack Test - Warning');

    	return view('welcome');
    }

 	public static function error()
 	{
 		Log::error('Slack Test - Error');

 		return view('welcome');
 	}   
}

Logging.phpの設定

さて、とりあえずログが出る機構は作れました。
これをデフォルトで実行するとLarave.logに log.ERROR: Slack Test - Error とログが表示されるハズです。

Laravel5.6で追加されたLogging.phpを書き換えていきます。

config/logging.php

<?php

use Monolog\Handler\StreamHandler;

return [
    'default' => env('LOG_CHANNEL', 'stack'),
    'channels' => [
        'stack' => [
            'driver' => 'stack',
            'name' => 'laravel_logging', // チャンネル名を入力
            'channels' => ['single', 'slack'], // slackを追加
        ],

        'single' => [
            'driver' => 'single',
            'path' => storage_path('logs/laravel.log'),
            'level' => 'debug',
        ],

        'daily' => [
            'driver' => 'daily',
            'path' => storage_path('logs/laravel.log'),
            'level' => 'debug',
            'days' => 7,
        ],

        'slack' => [
            'driver' => 'slack',
            'url' => env('LOG_SLACK_WEBHOOK_URL'),
            'username' => 'Laravel Log',
            'emoji' => ':boom:',
            'level' => 'debug', // デフォルトはcriticalなのでdebugに修正
        ],

        'stderr' => [
            'driver' => 'monolog',
            'handler' => StreamHandler::class,
            'with' => [
                'stream' => 'php://stderr',
            ],
        ],

        'syslog' => [
            'driver' => 'syslog',
            'level' => 'debug',
        ],

        'errorlog' => [
            'driver' => 'errorlog',
            'level' => 'debug',
        ],
    ],

];

めんどくさいのでそれ以外の設定はデフォルトです。

slack側の設定

.envファイルにLOG_SLACK_WEBHOOK_URLを設定しなくてはなりません。

まずはログ用のチャンネルを作ります。
image.png

次にimcoming webhookアプリと連携させます。
先ほど作ったチャンネルを選択して追加
image.png

そうすると設定画面に遷移するので画面下側のWebhook URLをコピーして設定保存しておく。
image.png

.envにWebhook URLを記述

先ほどコピーしたWebhook URLを.envファイルに記述します
LOG_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/XXXXXXXXXXXX/XXXXXXXXXXXX/XXXXXXXXXXXXXXX

これで終わりです。試してみましょう

  • /info
    image.png

  • /debug
    image.png

  • /error
    image.png

  • /warning
    image.png

ちゃんときれいに出来てますね。
案外slackでロギング悪くないと思いました。(ちゃんとログ設計して連続で出なければ)

なんか面白そうなのがあったらまた試して書こうと思います。

10
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?