티스토리 뷰

SW 개발/PHP

PHP, Monolog로 로깅하기

지단로보트 2017. 5. 6. 08:25

개요

MonologPHP 진영의 대표적인 로깅 라이브러리이다. Java 진영의 Logback과 동일한 위상을 갖고 있다. Monolog의 장점은 50가지 이상의 핸들러를 통해 여러 타겟 채널로 로깅을 수행할 수 있다는 것이다. 이번 글에서는 Monolog의 사용법을 설명하고자 한다.

Composer

아래와 같이 Composer를 이용하여 설치한다.

$ composer require monolog/monolog

Monolog 사용 예

아래와 같이 Monolog를 이용하여 로깅한다.

<?php

// Composer로 설치한 Monolog를 오토 로드
require "vendor/autoload.php";

// 로깅 시간을 대한민국으로 설정
date_default_timezone_set('Asia/Seoul');

// Monolog 오브젝트를 생성
$log = new \Monolog\Logger('Application');

// 파일시스템 핸들러를 추가한다.
$log->pushHandler(new \Monolog\Handler\StreamHandler('/var/log/app.log'));

// INFO 레벨로 로깅
$log->info('API Request Started.', array('path' => $_REQUEST['_url']));

Phalcon의 DI에 연동

Phalcon 프레임워크를 사용할 경우 DI를 이용하여 프로젝트 전역에서 Monolog 인스턴스를 이용하여 로깅할 수 있다.

// Phalcon의 DI 오브젝트에 Monolog 오브젝트를 추가
$di = new \Phalcon\DI\FactoryDefault();
$di->set('log', $log);

// Phalcon의 Micro 오브젝트 생성시 DI 오브젝트를 전달
$app = new \Phalcon\Mvc\Micro($di);

...
// 핸들러 실행 중에 DI된 Monolog 오브젝트로 로깅이 가능, IDE가 인지할 수 있게 타입 힌트 작성
/* @var $log Monolog\Logger */
$log = $app->log;
$log->info('API Request Started.', array('path' => $_REQUEST['_url']));

로깅 결과 확인

[2017-05-06 08:05:26] Application.INFO: API Request Finished. {"path":"/v1/clien/articles/자전거/1"} []
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함