As i wish

web에서 log 없애기 본문

Develope

web에서 log 없애기

어면태 2018. 1. 4. 12:00

오늘은 아주 간단 하지만 꼭 필요한 log없애기를 해볼께요.


웹개발을 하다보면 디버깅을 위해 어쩔 수 없이 console.log(블라블라) 를 써야할 상황이 오게 됩니다.

사실 log가 없으면 어디서 버그가 생기는지 찾기도 힘들고 제대로 내 코드가 돌아가는지도 확인하기 힘이 듭니다.

그래서  웹은 배포를 하더라도 일반인들도 충분히 내 log를 볼수있게 되고 쉽게 코드가 까지게 됩니다. (오른쪽 버튼을 누른 뒤 검사를 누르면 다보여요~)


그것을 그나마 방지하기 위해 minimize도 하고 log를 숨기는데요 오늘은 log를 숨기는 법을 알아보겠습니다.


{{밑에 사진에서 저는 현재 3개의 서버를 돌려요 LOCAL은 제 컴퓨터에서만 돌려보는 용이고 DEV는 DEVELOP 모드 PUBLIC은 배포됬을 때인데요 DEV는 PUBLIC되기 전에 테스트라고 보면 이해가 쉽죠.}}


{{노란 박스를 보면 $locationProvider 부분이 있는데 이부분은 log와 상관이 없으니 Angular 공식문서를 참고해 주세요 (https://docs.angularjs.org/api/ng/provider/$locationProvider)}}


하늘색 에 $logProvider.debugEnabled(!window.PUBLIC); 이라고 적힌 

부분보면 window.PUBLIC이 false일때만 debugEnabled가 된다고 보면 됩니다.

--> 즉, 배포시에는 window.LOCAL = false, window.DEV = false, window.PUBLIC = true가 되면서 $logProvider.debugEnabled가 false되게 되죠.



초록색 박스에 if 문에서 debugEnabled가 아닐 때(즉, false)에 밑에 있는 for 문이 돌게 됩니다. 그럼 console.log, console.debug, console.warn, console.info 같은 함수들이 function(){};  으로 치환이 되죠. 


결론! 그래서 우리가 아무리 console.log() 함수를 불러도 console.log() 함수가 function(){};으로 변환 되어 있기 때문에 아무일도 일어나지 않게 되는겁니다.


아주 간단해요 여러분도 적용 시켜서 꼭 배포 하길 바라고 부탁드려요~

그럼 다음엔 뭘쓸지 또 생각해보고 포스팅 할께요 궁금한거 있으시면 메일이나 댓글 달아주시고 이런 포스팅 해도 좋겠다라고 달아주시면 감사할 듯 합니다. 그럼 이만~


** 마지막으로 전체 코드에요** 







Comments