Good Day

[Codeigniter] Monolog를 사용해보자 본문

개발/PHP

[Codeigniter] Monolog를 사용해보자

영악 2018. 5. 28. 19:47

이번에 새롭게 API 서버를 만들면서 Monolog를 써보리라 다집하고 Log 클래스와 통합작업을 진행했다.


기존에 이미 많이들 사용하는 Codeigniter용 클래스가 있었는데... 아무래도 그닥 별로 내키지 않아 새로 작성했다.

(https://github.com/search?q=codeigniter+monolog)


한 대여섯개 있는데 그중에 하나인 stevethomas/codeigniter-monolog (https://github.com/stevethomas/codeigniter-monolog, 이하 "기존 라이브러리"라 칭함.)가 시초고 이걸 대부분 포크해서 조금 수정해서 쓰는 듯 했다.


코드 자체에 대해서 크게 불만은 없는데, 이전에 몇번 코어 클래스 확장하면서 했던 경험으로는 switch 때려박고 뭐 로드하고 하면서 힘들게 하느니 요즘 스타일에 맞게? 아니면 좀 쓰기 쉽게? 만들고자 작성해봤다.


1. 기존 라이브러리(https://github.com/stevethomas/codeigniter-monolog)

- CI Log 자체를 대체하게 생성

- Config 폴더 내에 monolog.php로 Config 데이터 생성

- 사용할 핸들러를 먼저 로드(코드상에선 File, Hipchat, New Relic)

- 각각의 핸들러를 선언하고 config에 따로 선언한 handlers를 돌면서 switch까지 통해서 핸들러를 생성

- 사용


2. 신규 라이브러리(https://github.com/UnRyongPark/codeigniter-3-monolog)

- 그냥 CI Log 자체를 상속 받아서 필수 값들은 그냥 CI Log에서 끌어다 사용.

- 필요 핸들러에 대해서 별도로 로드하게 처리,

- 핸들러 선언부를 method로 호출할 수 있게 만들어서 모든 핸들러 선언을 위해 n번동안 n번의 분기문이 발생시키지 않도록 처리

- 기존 코드들에서 log 기록 부분 간소화


사실 저렇게 동적으로 메서드 호출하는게 권고하지는 않을 수 있는데, 굳이 switch문 뺑뺑이 돌릴 필요는 없을 것 같고,

당장 config를 생성해서 돌릴만큼 Monolog가 이것저것 선언이 필요치는 않아 config파일도 따로 빼지 않았다.


라이브 하고 테스트까지 했는데 별 문제 없는 것이 잘 된다.

Comments