minstudio

Monolog를 이용한 로깅(Logging)

개발 중에 에러가 나면 화면에 에러를 띄워서 고치면 되지만, 서비스가 출시(Production)된 후에는 에러를 화면에 띄우면 해커에게 정보를 주게 됩니다. 대신 로그(Log) 파일에 몰래 기록을 남겨둬야 합니다. PHP의 표준 로깅 라이브러리인 Monolog를 사용합니다.

🚨
DB 연결 실패!
➡️
📹
Monolog (CCTV)
➡️
app.log 파일
[2026-05-05 10:00]
ERROR: DB Connection refused
[2026-05-05 10:05]
INFO: User 52 logged in
bash
// composer require monolog/monolog

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

$app->get('/broken', function ($request, $response) {
    // 1. CCTV (Logger) 생성
    $log = new Logger('my_app');
    
    // 2. 어디에 녹화할지 설정 (파일 지정)
    $log->pushHandler(new StreamHandler(__DIR__ . '/../logs/app.log', Logger::WARNING));
    
    try {
        // 일부러 에러 발생
        throw new Exception("데이터베이스 폭발!");
    } catch (Exception $e) {
        // 3. 에러 발생 시 로그 파일에 기록 남기기
        $log->error("비상 사태: " . $e->getMessage());
        
        // 사용자에게는 친절한 메시지만 보여줌
        $response->getBody()->write("서버에 일시적인 문제가 발생했습니다.");
        return $response->withStatus(500);
    }
});
Monolog를 이용한 로깅(Logging) | Minstudio