-
[Flutter] Don't invoke 'print' in production code. 뜨는 이유Flutter 2023. 12. 18. 10:54
Andriod Studio로 Flutter 개발을 할 때 변수값 확인을 위해 print를 사용하면 노란 밑줄이 뜨면서
Don't invoke 'print' in production code. (Documentation) Try using a logging framework.
라는 경고문구를 보게 된다.
이는
analysis_options.yaml
파일에 선언되어있는
include: package:flutter_lints/flutter.yaml
패키지 때문에 뜨는 경고문인데, 이 패키지는 Dart & Flutter의 코딩 규칙, 스타일의 일관성 등을 위해 기본으로 설치된 패키지이다.
다시 돌아와서 print 경고문을 번역기로 돌려보면
프로덕션 코드에서 'print'를 호출하지 마세요.
(문서) 로깅 프레임워크를 사용해 보세요.
라는 뜻인데 생산코드에서 print를 호출하면 빌드 후에 사용자에게 로그가 노출될 가능성이 있기 때문이다.
그래서 print로 막 변수를 출력하다보면 코드에 치명적인 변수들이 사용자에게 노출될 수 있기때문에 이를 숨기기 위해 print로 변수를 출력하는 것을 지양해달라는 의미이다.
이 대신 Flutter에서는 debugPrint(), log() 함수를 사용하는 것을 추천한다고 한다.
debugPrint()는 print()와 거의 동일하지만 디버그 모드에서만 활성화되고, Release 빌드 버전에서는 비활성화 된다.
log()는 debugPrint()와 유사하나, 콘솔, 파일, 시스템로그, 원격 로그와 같이 출력 대상을 다양하게 지정할 수 있다.
결론:
logging 패키지를 이용하여 print()보다 안전하고 좀 더 전문적인 log를 뽑아내고 싶으면 log()를 사용하고,
print() 보다 안전하지만 간단하게 log를 보고 싶으면 debugPrint()를 사용하면 되겠다.
참조: https://stackoverflow.com/questions/69531248/avoid-print-calls-in-production-code-documentation
'Flutter' 카테고리의 다른 글
[Dart] 변수 선언 시 var와 그 외의 타입을 지정하는 경우 (0) 2024.01.15 [Flutter] private 변수(_)에 대해서... (0) 2023.12.20 [Flutter] TextFormField 함수 정리 (0) 2023.11.14 [Dart] extends와 implements의 차이?? (2) 2023.11.02 [Dart] Dart에서의 static, const와의 차이점? (0) 2023.11.01