2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

라라벨에서 로깅(Logging) 설정을 관리하는 방법은?

_____
1. Q: 로깅 설정 파일은 어디에 있나요?
A: Laravel의 로깅 설정은 config/logging.php에서 관리합니다. 이 파일 안에 ‘channels’, ‘default’, ‘deprecations’ 같은 주요 옵션이 정의되어 있으며, .env에서 LOG_CHANNEL, LOG_LEVEL 등을 통해 값을 오버라이드할 수 있습니다.

2. Q: 기본 로그 채널(default channel)을 변경하려면 어떻게 하나요?
A:
1) .env 파일에서 LOG_CHANNEL 값을 수정:
LOG_CHANNEL=stack
2) 또는 config/logging.php의 ‘default’ 항목을 직접 변경:
‘default’ => env('LOG_CHANNEL', 'single'),

3. Q: Laravel이 제공하는 주요 로그 채널 종류는 무엇인가요?
A:
- single: 단일 로그 파일(storage/logs/laravel.log)
- daily: 일별 로테이션(storage/logs/laravel-YYYY-MM-DD.log)
- slack: 슬랙 웹후크로 에러 알림
- syslog, errorlog: 시스템 로그/표준 에러 출력
- stack: 여러 채널을 하나로 묶어 동시에 로그 전송

4. Q: daily 채널에서 로그 보존 기간을 조정하려면?
A:
config/logging.php에서 daily 채널 설정 수정:
‘daily’ => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'level' => env('LOG_LEVEL', 'debug'),
'days' => 14, // 보존 기간(일)
],

5. Q: 로그 수준(level)은 어떻게 설정하나요?
A: config/logging.php 내 각 채널의 ‘level’ 항목으로 지정합니다. 예:
'level' => env('LOG_LEVEL', 'info')
지원 레벨: emergency, alert, critical, error, warning, notice, info, debug.
.env에 LOG_LEVEL=warning 등으로도 설정 가능.

6. Q: 스택(stack) 채널 사용법과 장점은?
A:
- 사용법:
‘channels’ => [
'stack' => [
'driver' => 'stack',
'channels' => ['daily', 'slack'],
'ignore_exceptions' => false,
],
],
- 장점: 여러 로그 채널에 동시에 전송 가능(예: 파일+슬랙). 예외를 무시할지(ignore_exceptions) 여부도 설정.

7. Q: 슬랙 알림 채널을 설정하려면?
A:
1) .env에 슬랙 웹후크 URL 추가:
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/...
2) config/logging.php에 slack 채널 확인:
'slack' => [
'driver' => 'slack',
'url' => env('SLACK_WEBHOOK_URL'),
'username' => 'Laravel Log',
'emoji' => ':boom:',
'level' => 'critical',
],

8. Q: Monolog 핸들러·포매터를 직접 커스터마이즈하려면?
A: config/logging.php에서 custom 채널을 정의하고 tap 옵션 사용:
‘custom’ => [
'driver' => 'monolog',
'handler' => Monolog\Handler\RotatingFileHandler::class,
'with' => [
'filename' => storage_path('logs/custom.log'),
'maxFiles' => 7,
],
'tap' => [App\Logging\CustomizeFormatter::class],
],
// tap 클래스 예시
namespace App\Logging;
use Monolog\Formatter\LineFormatter;
class CustomizeFormatter {
public function __invoke($logger) {
foreach ($logger->getHandlers() as $handler) {
$handler->setFormatter(new LineFormatter(null, null, true, true));
}
}
}

9. Q: 완전한 커스텀 채널을 정의하는 방법은?
A: Logging 채널을 동적으로 생성하려면 Logging::build 메서드 사용:
```php
use Illuminate\Log\Logger;
use Monolog\Handler\StreamHandler;

Log::extend('mychannel', function($app, array $config) {
$handler = new StreamHandler(storage_path('logs/mychannel.log'), $config['level']);
$monolog = new \Monolog\Logger('mychannel');
$monolog->pushHandler($handler);
return new Logger($monolog);
});
```
config/logging.php에 ’mychannel’ 설정 추가 후 .env에 LOG_CHANNEL=mychannel 지정.

10. Q: 로깅 테스트는 어떻게 하나요?
A:
- PHPUnit 테스트 내에서 Log facade를 목(mock) 처리:
```php
Log::shouldReceive('info')
->once()
->with('Test message', ['user_id' => 1]);
```
- HTTP 테스트 시 로그 채널을 fake 처리:
```php
Log::fake();
$this->get('/some-route');
Log::assertLogged('error', function($message, $context) {
return Str::contains($message, 'Failed');
});
```

11. Q: 로그 호출 방법(facade vs helper vs logger()) 차이는?
A:
- Log facade: Log::info('msg');
- global helper: logger('msg');
- DI: public function __construct(\Psr\Log\LoggerInterface $logger)
실제로 모두 동일한 로거 인스턴스를 호출하며, 상황·코드스타일에 따라 선택.

12. Q: 로깅 시 context(컨텍스트)나 extra(추가 데이터)는 어떻게 사용하나요?
A:
```php
Log::warning('Payment failed', [
'order_id' => $order->id,
'user_id' => $user->id,
]);
```
Monolog 포매터를 이용해 context·extra 항목을 로그 메시지에 포함할 수 있습니다. 위에서 tap을 이용해 LineFormatter의 출력 형식을 조정하세요.
라라벨에서 로깅(Logging) 설정을 관리하는 방법은 매우 간단하고 유연합니다. 라라벨은 기본적으로 Monolog 라이브러리를 사용하여 다양한 로그 핸들러를 지원합니다. 아래는 라라벨에서 로깅 설정을 관리하는 방법에 대한 단계별 안내입니다. 1. 기본 설정 파일라라벨의 로깅 설정은 `config/logging.php` 파일에서 관리됩니다. 이 파일에서는 다양한 로깅 채널을 정의하고, 각 채널에 대한 설정을 할 수 있습니다. 2. 기본 로그 채널기본적으로 라라벨은 `stack` 채널을 사용하여 여러 로그 채널을 조합할 수 있습니다. `config/logging.php` 파일에서 기본 채널을 설정할 수 있습니다.```php'default' => env('LOG_CHANNEL', 'stack'),```여기서 `LOG_CHANNEL` <a href='https://sangseek.com/sangseeks/환경 변수/ko'>환경 변수</a>를 통해 기본 로그 채널을 변경할 수 있습니다. 3. 로그 채널 설정`config/logging.php` 파일에서 다양한 로그 채널을 정의할 수 있습니다. 예를 들어:```php'channels' => [ 'stack' => [ 'driver' => 'stack', 'channels' => ['single', 'slack'], ], 'single' => [ 'driver' => 'single', 'path' => storage_path('logs/laravel.log'), 'level' => '<a href='https://sangseek.com/sangseeks/debug/ko'>debug</a>', ], 'slack' => [ 'driver' => 'slack', 'url' => env('SLACK_WEBHOOK_URL'), 'channel' => '#logs', 'level' => 'critical', ],],```위의 예제에서 `stack` 채널은 `single`과 `slack` 채널을 조합하여 사용합니다. `single` 채널은 로컬 파일에 로그를 기록하고, `slack` 채널은 Slack으로 로그를 전송합니다. 4. 로그 레벨각 채널은 로그 레벨을 설정할 수 있습니다. 로그 레벨은 다음과 같습니다:- emergency- alert- critical- error- warning- notice- info- debug예를 들어, `level`을 `error`로 설정하면 해당 채널은 에러 이상의 로그만 기록합니다. 5. 환경 변수 사용라라벨은 `.env` 파일을 통해 환경 변수를 설정할 수 있습니다. 예를 들어, 로그 채널을 변경하려면 `.env` 파일에 다음과 같이 추가할 수 있습니다.```envLOG_CHANNEL=single``` 6. 로그 기록하기로그를 기록하려면 `Log` 파사드를 사용할 수 있습니다. 예를 들어:```phpuse Illuminate\Support\Facades\Log;Log::info('This is an info message.');Log::error('This is an error message.');``` 7. 로그 파일 관리라라벨은 기본적으로 `storage/logs` 디렉토리에 로그 파일을 생성합니다. 로그 파일은 `laravel.log`라는 이름으로 저장되며, 필요에 따라 파일 이름이나 경로를 변경할 수 있습니다. 8. 로그 롤링라라벨은 로그 파일의 크기가 일정 크기를 초과하면 자동으로 롤링할 수 있도록 설정할 수 있습니다. 이를 위해 `daily` 드라이버를 사용할 수 있습니다.```php'daily' => [ 'driver' => 'daily', 'path' => storage_path('logs/laravel.log'), 'level' => 'debug', 'days' => 14,],```위의 설정은 14일 동안의 로그 파일을 유지합니다. 결론라라벨에서 로깅 설정을 관리하는 것은 매우 직관적이며, 다양한 채널과 레벨을 통해 유연하게 로그를 기록할 수 있습니다. 필요에 따라 설정을 변경하고, 로그를 효과적으로 관리하여 애플리케이션의 상태를 모니터링하는 데 활용하세요.
작성자: ㅁㅁ [비회원] | 작성일자: 1년 전 2024-08-26 08:17:07
조회수: 152 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.