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 파일이 생성되고 그 안에 로그가 출력된다.
반응형