일시 중단된 명령문에 대해 최적화된 성능으로 Go에서 추적 로그인
중요한 경로에서 하위 수준 디버그/추적 로깅 문을 남겨두면 런타임이 허용됩니다. 필요에 따라 활성화하도록 구성합니다. 이 로깅은 비활성화된 문에 최소한의 영향을 주어야 하며 이상적으로는 부울 검사로 제한되어야 합니다.
C/C에서 LOG 매크로는 플래그를 확인한 후에만 평가하고 활성화된 경우에만 도우미 함수를 호출합니다. Go에서 이를 어떻게 달성할 수 있습니까?
log.Logger와 함께 io.Discard를 사용하는 것은 비효율적입니다. 로그 메시지는 비활성화 여부에 관계없이 완전히 형식화되기 때문입니다.
한 가지 접근 방식은 Enabled 플래그와 함께 EnabledLogger를 생성하는 것입니다. 로깅을 처리하기 위해 log.Logger를 위임합니다. 이는 형식 지정을 다루지만 활성화 여부에 관계없이 인수를 평가합니다.
인수 평가를 연기하려면 복잡한 값에 Stringify 래퍼를 사용하는 것이 좋습니다. 그러나 이 접근 방식은 여전히 장황하고 오류가 발생하기 쉽습니다.
또는 로깅하기 전에 활성화되었는지 수동으로 확인하세요. 이는 더 간결하지만 감독을 피하기 위해 규율이 필요합니다.
결국 Go의 인수에 대한 엄격한 평가는 옵션을 제한합니다. 런타임 구성에 완벽하지는 않지만 다음 패턴을 실행할 수 있습니다.
위 내용은 Suspended 문에 대한 최적화된 성능으로 Go에서 효율적인 추적 로깅을 달성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!