Qiita初投稿。
雑 of 雑で参ります。
環境 | |
---|---|
OS | Windows |
Laravel | 5.6 |
PHP | 7.2.4 |
筆者はxamppで行ってます。 |
Laravelでプロジェクトを作成する
laravel new project
とりあえずサクッとlaravelコマンドでプロジェクトを作成します。
適当にルーティングを決める
<?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が出るようにします。
<?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を書き換えていきます。
<?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
を設定しなくてはなりません。
次にimcoming webhookアプリと連携させます。
先ほど作ったチャンネルを選択して追加
そうすると設定画面に遷移するので画面下側のWebhook URLをコピーして設定保存しておく。
.envにWebhook URLを記述
先ほどコピーしたWebhook URLを.envファイルに記述します
LOG_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/XXXXXXXXXXXX/XXXXXXXXXXXX/XXXXXXXXXXXXXXX
これで終わりです。試してみましょう
ちゃんときれいに出来てますね。
案外slackでロギング悪くないと思いました。(ちゃんとログ設計して連続で出なければ)
なんか面白そうなのがあったらまた試して書こうと思います。