본문 바로가기

Engineering/PHP

log4php 를 이용한 로깅 in PHP

728x90

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



도움 받은 곳

http://ddiguru.com/blog/64-implementing-a-logger-in-php

http://logging.apache.org/log4php/source-repository.html

'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