PEAR: Log #1 – 기본 사용법

2015-04-21

대부분의 프로그래밍 언어는 여러 모듈과 라이브러리를 관리하기 위한 시스템을 가지고 있다. PHP는 PEAR(PHP Extension and Application Repository)라는 시스템을 가지고 있는데, 현재는 컴포져(Composer)에 밀려나는 중이다. 모던 PHP(Modern PHP)를 위해서라도 컴포져를 쓰는 것이 더 좋겠지만, 때로 아직은 PEAR를 써야 할 일이 종종 있다. 물론 이 경우라도 컴포져를 통해서 PEAR를 사용하는 것을 적극 권장한다. 컴포져를 이용해 PEAR를 사용하는 방법은 컴포져 설명서에 자세히 나와있다.

PHP를 설치하면 기본적으로 설치되는 PEAR 패키지가 몇개 있는데 Log도 그 중 하나다. 배포판에 따라 설치되지 않는 경우도 있지만, sudo pear install Log 명령을 통해서 간단히 설치 가능한다. 하지만 현재 Monolog가 쓰이는 경우가 더 많으므로, 새로운 프로젝트라면 그것을 쓰는 것을 더 추천하고 싶다.

예제를 통해서 Log 패키지 사용법을 하나씩 살펴보자.

3번째 줄

Log 패키지를 사용하기 위해서는 Log.php를 읽어들여야 하는데, PEAR를 통해서 설치했다면 보통 include_path로 잡혀있기 때문에 경로 없이 파일만 지정하면 된다. 컴포져를 통해서 설치했다면 vendor/autoload.php를 로드하면 된다.

5번째 줄

Log 인스턴스를 하나 생성한다. 여기서는 Log::factory를 이용했다. 또 다른 방법으로 singleton 메소를 사용 할 수도 있는데, factory는 일반적으로 Log 인스턴스를 여럿 생성하기 위해 사용하고, singleton은 오직 하나의 Log 인스턴스만 생성하고 싶을 때 사용한다.

첫번째 매개변수 console은 화면에 로그 메시지를 출력하는 핸들러 생성을 의미한다. 두번째는 로그 리소스의 이름으로 기본값은 빈 문자열이다. 여기서는 기본값을 그대로 사용했다. 세번째는 로그 파일 내에 기록되는 identification string으로 같은 로그 파일 내에 여러 종류의 로그 메시지들이 기록될 때 서로 구분하기 위해 사용하는 고유한 문자열이다. 네번째와 다섯번째는 핸들러 설정을 위한 배열과 기록 할 로그 레벨을 정하기 위한 값인데, 생략하면 기본값을 사용한다.

7번째 줄

Log 인스턴스의 log 메소드를 통해서 로그 메시지를 기록한다. 두번째 메소드로 로그 레벨을 지정 할 수 있는데, 생략 할 경우 기본값인 PEAR_LOG_INFO를 로그 레벨로 사용한다.

singleton 메소드를 통해 Log 인스턴스를 생성하는 방법은 factory 메소드와 동일하지만, 둘의 차이는 singleton 경우는 여러번 인스턴스를 생성하더라도 오직 하나의 인스턴스를 생성한다는 점이다. 보통의 경우라면 factory 보다 singleton이 더 적절하다.

singleton 메소드의 사용법은 factory 메소드와 동일하다. 다만, 여기서는 로그 핸들러를 console이 아닌 file을 사용했다. file 로그 핸들러를 사용하면 메시지를 텍스트 파일로 저장한다. 파일로 저장하기 때문에 두번째 매개변수에 로그 파일명이 들어간다.

다음 글에서는 로그 레벨(Log Level)에 대해 다뤄보려고 한다.