강의를 들으며 api 값을 콘솔에 출력하기 위해 print() 를 사용했더니,
이러한 경고가 출력되었다.
에러가 아닌 경고이기에 코드 진행에는 문제가 없으나 신경쓰이는건 여전하다.
링크되어 있는 도큐먼트로 들어가보니
Dart 2.5.0 버전부터 추가된 규칙으로
productionCode 에서는 print() 호출을 피하는 것을 권고한다.
release 모드로 빌드해도 log 등에 그대로 출력되기에 보안상의 문제가 될 수 있다.
해결방안
debugPrint() or log() 를 사용하자.
예시코드
<BAD>
void f (int x) {
print('debug: $x');
}
<GOOD>
void f(int x) {
debugPrint('debug: $x');
}
void f(int x) {
log('log: $x');
}
void f(int x) {
if (kDebugMode) {
print('debug: $x');
}
}
debugPrint() 와 log() 의 차이점
debugPrint() 와 log() 모두 같은 역할을 하는 것 같은데, 왜 두개로 나뉘어져 있는지 궁금해져 찾아보게 되었다.
(ChatGPT)
debugPrint()
1. 개발 중에만 동작할 수 있고, Release 모드에서는 아무 동작도 수행하지 않는다.
2. 개발자가 설정한 디버그 모드에 따라 출력되는 로그 수준이 다르다.
log()
1. 디버깅 외 프로덕션 환경에서 로깅을 위해 사용된다.
2. 'info', 'warning', 'error' 등 각 레벨에 따라 중요도와 출력형식이 다를 수 있다.
결론
개발할때는 print()를 사용하고 잘 삭제하는 습관을 들이거나, debugPrint()를 사용해 production 환경에서는 보이지 않게 해야하고, production 환경에서 로그 수집을 위해 코드를 작성한다면 log() 함수, 라이브러리를 사용해 개발하도록하자
출처:
'Flutter' 카테고리의 다른 글
플러터 생산성 단축키 (0) | 2023.11.15 |
---|