로깅
CI4 내장 Logger의 PSR-3 레벨별 로그 기록, 로그 파일 확인, 설정 방법을 학습합니다.
로그 기록
로그 파일 목록 (최근 5개)
log-2026-05-27.log
3,066,523 B
최근 로그 (최대 30줄)
| 레벨 | 시각 | 메시지 |
|---|---|---|
| 11 FCPATH/index.php(59): CodeIgniter\Boot::bootWeb(Object(Config\Paths)) | ||
| 10 SYSTEMPATH/Boot.php(68): CodeIgniter\Boot::runCodeIgniter(Object(CodeIgniter\CodeIgniter)) | ||
| 9 SYSTEMPATH/Boot.php(417): CodeIgniter\CodeIgniter->run() | ||
| 8 SYSTEMPATH/CodeIgniter.php(363): CodeIgniter\CodeIgniter->handleRequest(null, Object(Config\Cache), false) | ||
| 7 SYSTEMPATH/CodeIgniter.php(464): CodeIgniter\CodeIgniter->tryToRouteIt(null) | ||
| 6 SYSTEMPATH/CodeIgniter.php(841): CodeIgniter\Router\RouteCollection->loadRoutes() | ||
| 5 SYSTEMPATH/Router/RouteCollection.php(339): require('/home/blumine/ci4-playground/app/Config/Routes.php') | ||
| 4 APPPATH/Config/Routes.php(11): CodeIgniter\Router\RouteCollection->group('examples', Object(Closure)) | ||
| 3 SYSTEMPATH/Router/RouteCollection.php(799): CodeIgniter\Router\RouteCollection->{closure:/home/blumine/ci4-playground/app/Config/Routes.php:11}(Object(CodeIgniter\Router\RouteCollection)) | ||
| 2 APPPATH/Config/Routes.php(201): CodeIgniter\Router\RouteCollection->match([...], 'auth/login', 'Examples\\Auth::login') | ||
| 1 SYSTEMPATH/Router/RouteCollection.php(1026): trigger_error('Passing lowercase HTTP method "post" is deprecated. Use uppercase HTTP method like "POST".', 16384) | ||
| WARNING | 2026-05-27 15:06:02 | [DEPRECATED] Passing lowercase HTTP method "post" is deprecated. Use uppercase HTTP method like "POST". in SYSTEMPATH/Router/RouteCollection.php on line 1026. |
| 11 FCPATH/index.php(59): CodeIgniter\Boot::bootWeb(Object(Config\Paths)) | ||
| 10 SYSTEMPATH/Boot.php(68): CodeIgniter\Boot::runCodeIgniter(Object(CodeIgniter\CodeIgniter)) | ||
| 9 SYSTEMPATH/Boot.php(417): CodeIgniter\CodeIgniter->run() | ||
| 8 SYSTEMPATH/CodeIgniter.php(363): CodeIgniter\CodeIgniter->handleRequest(null, Object(Config\Cache), false) | ||
| 7 SYSTEMPATH/CodeIgniter.php(464): CodeIgniter\CodeIgniter->tryToRouteIt(null) | ||
| 6 SYSTEMPATH/CodeIgniter.php(841): CodeIgniter\Router\RouteCollection->loadRoutes() | ||
| 5 SYSTEMPATH/Router/RouteCollection.php(339): require('/home/blumine/ci4-playground/app/Config/Routes.php') | ||
| 4 APPPATH/Config/Routes.php(11): CodeIgniter\Router\RouteCollection->group('examples', Object(Closure)) | ||
| 3 SYSTEMPATH/Router/RouteCollection.php(799): CodeIgniter\Router\RouteCollection->{closure:/home/blumine/ci4-playground/app/Config/Routes.php:11}(Object(CodeIgniter\Router\RouteCollection)) | ||
| 2 APPPATH/Config/Routes.php(201): CodeIgniter\Router\RouteCollection->match([...], 'auth/login', 'Examples\\Auth::login') | ||
| 1 SYSTEMPATH/Router/RouteCollection.php(1026): trigger_error('Passing lowercase HTTP method "get" is deprecated. Use uppercase HTTP method like "GET".', 16384) | ||
| WARNING | 2026-05-27 15:06:02 | [DEPRECATED] Passing lowercase HTTP method "get" is deprecated. Use uppercase HTTP method like "GET". in SYSTEMPATH/Router/RouteCollection.php on line 1026. |
| 11 FCPATH/index.php(59): CodeIgniter\Boot::bootWeb(Object(Config\Paths)) | ||
| 10 SYSTEMPATH/Boot.php(68): CodeIgniter\Boot::runCodeIgniter(Object(CodeIgniter\CodeIgniter)) | ||
| 9 SYSTEMPATH/Boot.php(417): CodeIgniter\CodeIgniter->run() | ||
| 8 SYSTEMPATH/CodeIgniter.php(363): CodeIgniter\CodeIgniter->handleRequest(null, Object(Config\Cache), false) | ||
| 7 SYSTEMPATH/CodeIgniter.php(464): CodeIgniter\CodeIgniter->tryToRouteIt(null) | ||
| 6 SYSTEMPATH/CodeIgniter.php(841): CodeIgniter\Router\RouteCollection->loadRoutes() |
log_message() — PSR-3 레벨
CI4는 PSR-3 표준을 따르는 8단계 로그 레벨을 지원합니다. 낮을수록 상세, 높을수록 심각합니다.
DEBUG
상세 디버그 정보. 개발 중에만 사용.
INFO
일반 정보성 메시지.
NOTICE
정상이지만 주목할 만한 이벤트.
WARNING
오류는 아니지만 주의 필요.
ERROR
즉각 조치가 필요한 런타임 오류.
CRITICAL
심각한 조건 (컴포넌트 사용 불가 등).
ALERT
즉각 행동이 필요 (DB 다운 등).
EMERGENCY
시스템 전체 사용 불가 상태.
기본 사용 예시
// 헬퍼 함수로 간단하게 기록
log_message('info', '사용자 로그인: user_id=42');
log_message('error', '결제 실패: ' . $e->getMessage());
// 플레이스홀더 사용 (PSR-3 스타일)
log_message('warning', '잔액 부족: user={user}, balance={balance}', [
'user' => $user->name,
'balance' => $user->balance,
]);
// Logger 서비스 직접 사용
$logger = service('logger');
$logger->info('주문 완료', ['order_id' => $orderId]);
$logger->critical('DB 연결 실패');
로그 파일 위치:
로그 임계값 설정보다 낮은 레벨은 기록되지 않습니다 (
writable/logs/log-YYYY-MM-DD.log로그 임계값 설정보다 낮은 레벨은 기록되지 않습니다 (
Config/Logger.php의 $threshold).
app/Config/Logger.php 설정
// app/Config/Logger.php
public int $threshold = 4; // 4 이상 레벨만 기록 (WARNING~EMERGENCY)
// 0 = 모두 기록, 9 = 기록 안 함
// 핸들러 설정
public array $handlers = [
// 파일 핸들러 (기본)
'CodeIgniter\Log\Handlers\FileHandler' => [
'handles' => ['critical', 'alert', 'emergency', 'debug',
'error', 'info', 'notice', 'warning'],
'path' => WRITEPATH . 'logs/',
'fileExtension' => 'log',
'filePermissions' => 0644,
'dateFormat' => 'Y-m-d H:i:s',
],
// ChromeLogger (개발 도구 콘솔 출력)
// 'CodeIgniter\Log\Handlers\ChromeLoggerHandler' => [
// 'handles' => ['debug', 'info'],
// ],
];
개발 환경에서 모든 로그 기록 (.env)
# .env
logger.threshold = 0 # 모든 레벨 기록
운영 환경에서는
threshold = 4 (WARNING 이상)를 권장합니다.
DEBUG 레벨을 운영에 두면 민감한 정보가 로그에 남을 수 있습니다.