log4php 를 이용한 로깅 in PHP
JAVA 에서 많이 사용하는 log4j 나 logback 처럼 PHP 에서도 로그 라이브러리를 사용하고 싶었다.
구글링에서 많이 나오는 방법은 모노로그(monolog) 를 사용하라고 나오는데, composer 라던가 다른걸 또 설치해야한다는 귀찮음이 있다.
프레임워크를 사용하는 환경이 아니라, 옛날 PHP 로 웹 개발 하던 시절의 PHP 소스에다가 log4j 같은 로깅을 하고 싶을때 찾은 방법이 log4php 였다.
1. log4php 소스 다운로드
2. log4php.tar.gz 압축 해제 및 디렉토리 복사
# tar xvfz apache-log4php-2.3.0-src.tar.gz
# ls
apache-log4php-2.3.0
# cp -r apache-log4php-2.3.0/src/main/php ./log4php
※ apache-log4php 디렉토리에는 INSTALL(디렉토리 복사 방법), README 파일, 로그 php 소스들이 있는 src/ 디렉토리(설정파일, example 소스들을 가진 examples 등을 가지고 있다.) examples/ 에 포함된 소스들을 확인하면 어떤식으로 사용하는지 알 수 있다.
3. logger 설정 및 테스트
- appender_rollingfile.properties
log4php.rootLogger = INFO, default
log4php.appender.default = LoggerAppenderRollingFile
log4php.appender.default.layout = LoggerLayoutPattern
log4php.appender.default.file = log/convert.log
log4php.appender.default.MaxFileSize = 100000
log4php.appender.default.MaxBackupIndex = 3
log4php.appender.default.layout.ConversionPattern="%d{Y-m-d H:i:s} %F %p %m %n"
※ 로그 레벨은 info 이상, logger 를 default 로 정하고, rolling(조건을 만족하면 다른 파일로 변경하면서 새로운 파일 생성) 으로 설정하고, 파일의 size 는 100,000 바이트를 최대로, rolling 되는 파일 갯수는 3 로 설정했다.
- test.php
: info 레벨로 한번, debug 레벨로 두번 로깅되도록 했다.
<?php
require_once 'log4php/Logger.php';
Logger::configure(dirname(__FILE__).'/appender_rollingfile.properties');
$logger =& Logger::getRootLogger();
$logger->info($_SERVER['REMOTE_ADDR']);
$logger->debug($_SERVER['REMOTE_ADDR']);
$logger->debug('aaabbbccc');
?>
- 로깅 테스트
: debug() 로 출력한 문은 안 나오고, info() 만 출력되었다.
# php test.php
# cat log/convert.log
2017-10-25 15:20:40 /home/user01/test.php INFO
도움 받은 곳
'Engineering > PHP' 카테고리의 다른 글
php 날짜형 포맷 (0) | 2013.02.26 |
---|---|
PHP xml 파싱 (0) | 2013.02.13 |
그누보드 설치시 하얀화면 발생 (0) | 2012.11.16 |
CentOS 5.6 에서 php 5.3 설치 (0) | 2012.05.15 |
apm 설치 (0) | 2011.11.14 |