TIP게시판

제목 Codeigniter3.x에서 Monolog를 로그 기록 라이브러리로 사용하기
글쓴이 영악씨 작성시각 2018/05/28 19:21:28
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 11802   RSS

안녕하세요! 다들 잘 지내셨나요.

틈틈히 필요한 것들을 만들어서 공개하고있는데, 이번엔 monolog 연동 작업하면서 필요한 클래스를 생성해 공유합니다.

사실 이미 나와있는 소스가 있는데... 입맛대로 쓰고 싶어서 새로 써봤습니다.

 

Monolog는 아시겠지만 PHP에서는 이제 슬슬 반표준쯤으로 생각하는 수준의 로깅라이브러립니다.

지난번에 Sentry 연동하고 사용하다 이번에 API 서버 재구성 작업중에 Monolog를 도입하게 되어 클래스를 만들어봤습니다.

 

사용방법은 그리 어렵지 않으니 필요하신분들은 공식 페이지를 한번 훑어보셔도 좋을 것 같습니다.

모놀로그 공식 레포: https://github.com/Seldaek/monolog

 

1. Ci config파일에서 composer autoload 기능 켜주세요

line 139. $config['composer_autoload'] = FALSE;
=>  $config['composer_autoload'] = './vendor/autoload.php';
OR => $config['composer_autoload'] = TRUE;

2. 컴포저로 라이브러리 설치

composer require monolog/monolog

3. github에 있는 라이브러리 파일 다운받으셔서 설정하신 prefix로 이름 바꿔주시고

https://github.com/UnRyongPark/codeigniter-3-monolog

4. 설정을 바꿔주세요.

  • MY_Log.php 파일을 열어주세요
  • $target_handlers 배열에 원하는 핸들러를 만들게 호출할 메서드의 이름을 정해주세요.
  • 입력한 "이름+Handler"라는 메서드를 생성하고 내용을 넣어주세요. (MY_Log.php 파일 안에 이미 Raven - ravenHandler(), 파일 - fileHandler(), Slack Webhook - slackWebhookHandler()용 예제가 준비되어 있습니다.)
  • 이용합니다!

사용방법은 기존 Codeigniter의 log_message로 날리시면 됩니다.

log_message("debug","안녕하세요");

끝!

 

핸들러 목록은 : https://github.com/Seldaek/monolog/blob/master/doc/02-handlers-formatters-processors.md

Codeigniter 2버전대를 쓰신다면: https://github.com/stevethomas/codeigniter-monolog

 

pull request, 표준 제안 등등 의견주시는건 언제나 환영입니다!

 다음글 신기한 textarea 버그 (크롬+a?) (1)
 이전글 수정된 js, css를 반영하기 위한 가장 편한 방법 (3)

댓글

한대승(불의회상) / 2018/05/29 10:33:22 / 추천 0

log_message를 통한 연동이군요.

좋은 정보 감사합니다.

제롬씨 / 2018/06/07 19:41:04 / 추천 1
질문 좀 드려도 될가요? 혹시 메세지가 array인 경우 어떻게 처리하셨나요 print_r사용해더니 화면에 노출이 됩니다 뭐가 잘못된것인지 모르겠어요

그리고 $target_handlers부분이 조금 이해가 안가는데 실제로 사용하시는 부분을 보여 주실수 있는지요 미리 감사드립니다
한대승(불의회상) / 2018/06/08 08:34:29 / 추천 1

@제롬씨 저는 주로 json_encode()를 사용합니다.

print_r() 함수를 선호 하신다면 두번째인자를 true로 하시면 됩니다.(ex print_r($var, true))

빛그림 / 2018/06/08 09:53:29 / 추천 1
implode를 이용해도 되지 않을까요
영악씨 / 2018/06/08 10:30:39 / 추천 0

@제롬씨

로그메세지가 array인 경우가 없었어서 저는 처리를 따로 하지 않았습니다만...! 필요하다면 한대승님과 빛그림님이 말씀해주신대로 json_encode나 implode를 사용해서 스트링으로 만들 것 같습니다.

log_message에 배열을 넣을거란 생각을 해본적이 없었네요..;;;