Laravel

[Laravel] 라라벨 log 파일에 로그 출력하기

먹세 2021. 2. 19. 10:27

두가지 방법 소개

1. 기본 라라벨 설정으로 로그 찍는 방법

사용 예 ) Log::info('=== 로그 찍기 ===');

 

2. monolog 라이브러리를 이용해 로그 찍는 방법

사용 예 ) $log->info('=== 로그 찍기 ===');

 

 

1. 기본 라라벨 설정으로 로그 찍기

- config/logging.php 파일에 로그 설정을 작성

return [
	'default' => env('LOG_CHANNEL', 'stack'),
    
    'channels' => [
      'stack' => [
        'driver' => 'stack',
        'channels' => ['daily'],
        'ignore_exceptions' => false,
      ],
      
      'daily' => [
        'driver' => 'daily',
        'path' => storage_path('logs/laravel_daily.log'),
        'level' => 'debug',
        'days' => 1, /* 1일마다 laravel_daily.log 파일이 갱신된다. 전날 로그파일 삭제됨 */
      ],
      
      'single' => [
        'driver' => 'single',
        'path' => storage_path('logs/laravel.log'), /* 이 파일에 로그가 계속 쌓인다. */
        'level' => 'debug',
      ]
	]
];
      
      

기본채널은 stack 으로 설정되어 있고, .env 파일 내에 LOG_CHANNEL = single 처럼 따로 작성을 하지 않으면 stack 채널이 디폴트로 사용된다.

stack 은 아래 daily, single 채널 등 여러개의 채널을 동시에 사용할 수 있게 옵션을 제공한다.

'channels' => ['daily', 'single' ...]

path 옵션은 로그 파일을 저장할 위치를 정해준다. 위의 경우는 (storage/logs/laravel_daily-2021-02-19.log)

 

 

- .env 에서 로그채널(로그찍는파일 지정) 및 옵션 설정 가능

LOG_CHANNEL = daily
LOG_LEVEL = 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_LEVEL = warning 일 경우, debug 나 info 로그는 찍히지 않는다.

개발시에는 debug 로 놓고,

운영시에는 warning 정도로 놓으면 적당한듯.

 

2. monolog 라이브러리를 이용해서 로그 찍기

- composer require monolog/monolog 로 설치

- 로그 출력을 사용할 php파일에 작성

use Monolog\Logger;
use Monolog\Handler\StreamHandler;

$log = new Logger('logname');
$log->pushHandler(new StreamHandler(storage_path('logs/laravel.log'), Logger::INFO));
$log->info('=== 로그 찍기 ===');

storage/logs/ 경로에 laravel.log 파일이 생성되고 그 안에 로그가 출력된다.

반응형