Unity코드 아키텍처와 품질

빌드에서 Debug.Log 줄이기

개발 중에는 로그를 유지하되, 릴리스 빌드에서는 과도한 `Debug.Log` 비용을 줄이는 Unity 기본 전략입니다.

마지막 수정 2026년 3월 19일

기본 패턴

csharp
[System.Diagnostics.Conditional("ENABLE_LOG")]
public static void Log(object message)
{
    Debug.Log(message);
}

설명

  • Unity 공식 가이드는 특히 Update, LateUpdate, FixedUpdate 안의 로그가 성능을 크게 떨어뜨릴 수 있다고 설명합니다.
  • 릴리스 빌드에서는 로그를 완전히 제거하거나, 조건부 래퍼를 통해 끄는 방식이 흔합니다.
  • Stack Trace 옵션도 필요 이상으로 켜 두면 성능과 로그량에 영향을 줍니다.
  • 디버깅 편의와 릴리스 성능은 분리해서 운영하는 편이 좋습니다.

짧은 예제

csharp
public static class GameLog
{
    [System.Diagnostics.Conditional("ENABLE_LOG")]
    public static void Info(object message)
    {
        Debug.Log(message);
    }
}

빠른 정리

항목설명
조건부 로그빌드별로 로그 포함 여부 제어
Update 로그 주의프레임마다 출력되면 비용 큼
Stack Trace 설정릴리스에서는 최소화 고려
래퍼 함수로그 정책을 한곳에서 관리
디버그와 출시 분리운영 환경 요구가 다름

주의할 점

문제가 생겼을 때 쓸 로그까지 모두 지워 버리면 운영 진단이 어려워질 수 있습니다. 완전 삭제와 최소 유지 사이에서 목적을 나눠 두는 편이 좋습니다.

참고 링크

2 sources