Laravel 로그 (+Slack에 로그 보내기)


라라벨의 로그

로그를 출력하는 방법으로 라라벨에서 기본적으로 제공해주는 Log::debug($message)나 Monolog라이브러리를 사용할수있다

아래의 설명의 라라벨의 로그를 사용한다


로그설정파일

아래의 경로에 로그 설정정보가 있다 (위의 이미지 참조)

/config/logging.php


로그설정파일의 항목설명

'default' => env('LOG_CHANNEL', 'stack'), // 1. env에 설정된 LOG_CHANNEL이 없으면 stack 채널을 사용한다

'channels' => [
        'stack' => [ // 2. 앞서 설정된 stack채널, 특징으로써는 channels에 다수의 채널을 추가가능하다
            'driver' => 'stack',
            'channels' => ['single'], // 3. 현재 single채널만 사용한다는 의미, daily등을 추가가능하고 추가하면 , single,daily로그 둘다 출력
            'ignore_exceptions' => false,
        ],

        'single' => [ // 하나의 laravel.log파일에 계속 로그를 저장한다
            'driver' => 'single',
            'path' => storage_path('logs/laravel.log'), // 4. single채널의 로그파일을 storage/logs/laravel.log에 저장한다
            'level' => env('LOG_LEVEL', 'debug'), // 5.로그레벨은 debug부터 저장 (전부다 저장한다는말이됨)
        ],

        'daily' => [ // 매일 로그를 저장한다
            'driver' => 'daily',
            'path' => storage_path('logs/laravel.log'),
            'level' => env('LOG_LEVEL', 'debug'),
            'days' => 14, // 6.14일 간격으로 로그를 삭제한다
        ],

로그레벨

로그레벨을 warning으로 할 경우 warning이하의 항목( notice, info, debug )은 로그를 발생시키지않는다

  • emergency

  • alert

  • critical

  • error

  • warning

  • notice

  • info

  • debug


로그레벨출력

로그의 퍼사드를 사용한다

Log::emergency($message);
Log::alert($message);
Log::critical($message);
Log::error($message);
Log::warning($message);
Log::notice($message);
Log::info($message);
Log::debug($message);

실제사용예제

Log::info('User failed to login.', ['id' => $user->id]);
// [2023-08-02 12:34:56] local.INFO: User failed to login. {"id": 123}

채널지정하고 사용

Log::stack(['single', 'slack'])->info('Something happened!');




슬랙으로 로그 보내기

  1. 슬랙api에서 앱을 생성

  2. Incoming Webhooks에서 Add New Webhook to Workspace버튼을 클릭해서 URL을 생성 ( 아래 이미지 참조 )

  3. 생성된 Webhook URL을 laravel의 .env파일에 추가

LOG_SLACK_WEBHOOK_URL = WebhookURL
  1. php artisan config:clear명령어입력

  2. config/logging.php에 slack채널 추가

'stack' => [
  'driver' => 'stack',
  'channels' => ['daily','slack'], // slack채널과 daily채널을 사용한다
  'ignore_exceptions' => false,
],
'daily' => [
  ...
],
'slack' => [
  ...
],
  1. 슬랙에서 로그 확인






참조

https://mytory.net/archives/13149

https://mosei.tistory.com/entry/Laravel-%EB%9D%BC%EB%9D%BC%EB%B2%A8-log-%ED%8C%8C%EC%9D%BC%EC%97%90-%EB%A1%9C%EA%B7%B8-%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0

https://laravel.kr/docs/9.x/logging

https://poppotennis.com/posts/laravel-slack-log

Aug 2, 2023 Views 328