PHP 개발할때 가장 불편한 점은 로그 출력이죠.
서버 사이드에서 실행되는 스크립트이다보니 로그가 파일로 출력되어
화면에 실시간으로 띄워서 보기가 어렵습니다.
보통 tail로 살펴보는 방법이 일반적으로 사용됩니다만
이 역시 서버의 특성상 나 혼자 접속한 개발서버라면 모르겠지만
여러 사람이 접속중이라면 로그가 섞이는 문제를 피할 수 없죠.
이 문제를 극복하기 위해서 서버단의 PHP에서 발생한 로그를
웹브라우저의 console에 출력하기 위한 라이브러리가 몇 있습니다.
제가 올리는 라이브러리는 그중에서 PHPConsole을 쓰기 편리하도록
약간 커스터마이즈한 것입니다.
설치방법도 매우 간단한데 그냥 아무 디렉토리에나 풀어놓고서
로그를 써야하는 곳에서 MyLog.php를 require 또는 include 하기만 하면
즉시 사용 가능 상태가 됩니다.
원래는 composer로 설치해야 하는데 이게 새로운 프로젝트를 시작하는게
아니라 기존 돌아가던 소스에 적당히 설치해서 로그 출력을 해야하는 경우에는
composer를 통하는게 너무 불편해서 설치를 간단하게 할 수 있도록 개조했습니다.
사용방법은 간단합니다.
require_once __DIR__ . '/../lib/MyLog/MyLog.php'; $log = new MyLogger('TOP');
이런 식으로 Logger 이름을 지정해서 MyLogger 객체를 생성해서 쓰면 됩니다.
출력은 웹브라우저 콘솔, 파일, 서버콘솔을 지원합니다. (서버콘솔은 CLI모드로 썼을때만)
파일 출력은 기본적으로 메인 로그 파일에 출력을 하고 거기에만 하는게 아니라
pushFileHandler()를 이용해서 맘대로 파일을 추가할 수 있습니다.
필요에 따라 로거별로 다른 파일로 출력하게 할 수 있죠.
아참 중요한 사항이 있습니다... 웹브라우저 콘솔로 로그를 출력하려면
크롬 브라우저에 PHPConsole 익스텐션을 설치해야 합니다. (크롬 이외의 브라우저는 X)
그리고 MyLib.php는 그냥 제가 자주 사용하는 유틸리티 함수를 모아놓은 것입니다.
꽤 재미있는 함수들이 많습니다.
특히 db쪽 함수들은 제가 여러가지 라이브러리나 프레임워크들의 db쪽 함수들 사용방법들을
참고해서 나름 가장 편리하고 심플하게 쓸 수 있게 한거라서... 분석해보시면 재미있을겁니다.
저는 요즘 PHP에서 손을 뗀 상태라... 그냥 썩혀두니까 많이 아깝네요.
누군가에게 도움이 될 수 있기를 바랍니다.
-추신
아참 그리고 깜빡 하고 말씀 안드린게 있는데 XDebug_Helper라는 것도 크롬 웹스토어에서 설치하세요
XDebug_Helper는 XDebug를 on/off하는 툴인데 제가 드린 소스도 여기 연동되어 있어서
XDebug의 TRACE가 ON이 되어야만, 즉 req 헤더에 XDEBUG_TRACE가 포함되어야만 로그가 출력됩니다.
이렇게 하는 이유는 이 로그시스템은 실제 동작되는 서버에도 포함되게 되는데 모든 사람들에게
일일이 계속 로그를 출력하면 서버에 부담이 되니까요..
필요할 때만 간단하게 브라우저쪽에서 로그를 껐다 켰다 할 수 있습니다.
디폴트가 OFF인거고 XDebug Helper로 TRACE ON 하시면 딱 나한테만 로그가 나오지요.
아니면 귀찮으시면 MyLog.php를 여신 다음에 XDEBUG_TRACE를 체크하는 라인을 찾아서
if 문을 지워버리세요. 그럼 그냥 항상 로그가 나올겁니다.
그리고 윈도우에서도 잘 됩니다. 저도 개발은 윈도우에서 했던터라
정말 너무 감사합니다!