Seaslog
Seaslog
서비스가 커질수록 로그는 그냥 기록이 아니라 운영을 파악하는 중요한 재료가 돼요. PHP에 내장된 error_log, syslog도 쓸 만하지만, 에러 레벨이 없거나 형식이 고정되지 않아서 다듬기 어려운 경우가 있죠. Seaslog는 이런 요구를 겨냥한 PHP용 로그 확장이에요.
출처: Seaslog
본문
Seaslog는 효율적이고 빠르며 안정적인 PHP용 로그 확장이에요. 로그 저널(Log journal)은 보통 시스템·소프트웨어의 운영 기록을 의미해요. 로그를 분석하면 시스템과 소프트웨어, 애플리케이션의 운영 상황을 파악하기 쉬워져요.
로그가 충분히 풍부하면 이전 사용자의 동작·유형·지역 분포 같은 정보도 분석할 수 있어요. 또 애플리케이션 로그는 동시에 여러 레벨을 가리킬 수 있어서, 건강 상태 분석을 쉽게 하고 문제를 빠르게 찾아 위치를 짚어 해결하고 손실을 복구하는 데 도움이 돼요.
PHP에 내장된 error_log, syslog 함수는 강력하고 성능도 훌륭하지만 몇 가지 단점이 있어요. error_log는 에러 레벨이 없고 고정 형식이 없으며, syslog는 모듈을 구분하지 않고 시스템 로그와 섞여요. 이 때문에 유연성이 많이 줄어들고 애플리케이션 요구를 충족하지 못하기도 하죠. 다행히 log4php, plog, monolog 같은 서드파티 로그 라이브러리가 이런 단점을 보완하고 있어요.
그렇다면 다음 요구를 모두 만족하는 로그 라이브러리가 있을까요?
- 모듈, 분류(Modules, classification)
- 간단한 설정(가능하면 설정 없이)(Simple configuration, preferably without configuration)
- 명확하고 이해하기 쉬운 로그 형식(Clear log format and easy understanding)
- 간단한 적용과 좋은 성능(Simple application and well performance)
Seaslog는 바로 이 요구들을 충족해요.
현재 제공하는 기능(What is provided at present)
- PHP 프로젝트에서 로그 규격을 빠르게 기록해요(record the log specification and repidly).
- 기본 로그 디렉터리와 모듈을 설정해요(Configure the default log directory and module).
- 지정된 로그 디렉터리와 현재 설정을 캡처해요(Specified log directory and capture current configuration).
- 경고 프레임워크의 사전 분석(Preliminary analysis of the early warning framework).
- 효율적인 로그 버퍼와 편리한 버퍼 디버그(Efficient log buffer and convenient buffer debug).
- PSR-3 로그 인터페이스 규격을 따름(Follow the PSR-3 log interface specification).
- 오류 정보 자동 기록(Automatically record error information).
- 비정상 정보 자동 기록(Automatically record abnormal information).
- TCP 포트 연결 + RFC5424 전송 지원(Support Connect the TCP port, send with RFC5424).
- UDP 포트 연결 + RFC5424 전송 지원(Support Connect the UDP port, send with RFC5424).
- RequestId로 요청 구분 지원(Support RequestId differentiated requests).
- 로그 템플릿 커스터마이징 지원(Support for log template customizations).
더 자세한 내용은 » SeasLog Document at Github를 참고해요.
설치·설정(Installing/Configuring)
- 요구 사항(Requirements)
- 설치(Installation)
- 런타임 설정(Runtime Configuration)
- 리소스 유형(Resource Types)
- 사전 정의 상수(Predefined Constants)
- 예제(Examples)
Seaslog 함수
seaslog_get_author— SeasLog 저자를 가져와요(Get SeasLog author).seaslog_get_version— SeasLog 버전을 가져와요(Get SeasLog version).
SeasLog 클래스
SeasLog— SeasLog 클래스SeasLog::alert— alert 로그 정보를 기록해요(Record alert log information).SeasLog::analyzerCount— 레벨, log_path, key_word로 로그 개수를 가져와요(Get log count by level, log_path and key_word).SeasLog::analyzerDetail— 레벨, log_path, key_word, start, limit, order로 로그 상세를 가져와요(Get log detail by level, log_path, key_word, start, limit, order).SeasLog::closeLoggerStream— logger에서 스트림을 수동으로 해제해요(Manually release stream flow from logger).SeasLog::__construct— 설명(Description).SeasLog::critical— critical 로그 정보를 기록해요(Record critical log information).SeasLog::debug— debug 로그 정보를 기록해요(Record debug log information).SeasLog::__destruct— 설명(Description).SeasLog::emergency— emergency 로그 정보를 기록해요(Record emergency log information).SeasLog::error— error 로그 정보를 기록해요(Record error log information).SeasLog::flushBuffer— 로그 버퍼를 비우고 appender 파일로 덤프하거나 tcp/udp로 원격 api에 보내요(Flush logs buffer, dump to appender file, or send to remote api with tcp/udp).SeasLog::getBasePath— SeasLog 기본 경로를 가져와요(Get SeasLog base path).SeasLog::getBuffer— 메모리의 로그 버퍼를 배열로 가져와요(Get the logs buffer in memory as array).SeasLog::getBufferEnabled— 버퍼가 활성화됐는지 판단해요(Determin if buffer enabled).SeasLog::getDatetimeFormat— SeasLog 날짜·시간 형식 스타일을 가져와요(Get SeasLog datetime format style).SeasLog::getLastLogger— SeasLog 마지막 logger 경로를 가져와요(Get SeasLog last logger path).SeasLog::getRequestID— 요청을 구분하는 SeasLog request_id를 가져와요(Get SeasLog request_id differentiated requests).SeasLog::getRequestVariable— SeasLog 요청 변수를 가져와요(Get SeasLog request variable).SeasLog::info— info 로그 정보를 기록해요(Record info log information).SeasLog::log— 공통 로그 기록 함수(The Common Record Log Function).SeasLog::notice— notice 로그 정보를 기록해요(Record notice log information).SeasLog::setBasePath— SeasLog 기본 경로를 설정해요(Set SeasLog base path).SeasLog::setDatetimeFormat— SeasLog 날짜·시간 형식 스타일을 설정해요(Set SeasLog datetime format style).SeasLog::setLogger— SeasLog logger 이름을 설정해요(Set SeasLog logger name).SeasLog::setRequestID— 요청을 구분하는 SeasLog request_id를 설정해요(Set SeasLog request_id differentiated requests).SeasLog::setRequestVariable— SeasLog 요청 변수를 수동으로 설정해요(Manually set SeasLog request variable).SeasLog::warning— warning 로그 정보를 기록해요(Record warning log information).
더 알아보기
- PSR-3 로그 인터페이스 규격을 함께 보면 SeasLog의 메서드 명명(alert, error, warning 등)이 어디서 왔는지 이해하기 쉬워요.
- TCP/UDP로 RFC5424 형식을 보내는 기능은 중앙 로그 수집 구성에서 특히 유용해요.