로그

# 학습 과정 소개

로그에 대해 알아보고 월드 제작 과정에서 로그를 효과적으로 활용하는 방법을 살펴봅시다.

# 로그 소개

로그(Log)란 월드 제작 중 발생하는 여러 가지 정보나 문제 상황에 대한 기록을 말합니다. 로그를 통해 현재 제작 중인 월드가 의도대로 잘 동작하고 있는지 확인할 수 있습니다. 만약 의도대로 동작하지 않는다면 문제의 원인을 파악하고 해결하는 데 로그를 활용할 수 있습니다. 로그 종류는 로그를 남기는 주체를 기준으로 구분합니다. 시스템 로그와 크리에이터 로그로 나누어 살펴봅시다.

## 시스템 로그

제작 중인 월드에서 발생하는 정보 메시지나 오류를 시스템에서 파악해 알려주는 로그를 말합니다. 시스템 로그의 오류는 그 중요도에 따라 아래와 같이 분류합니다.

[{"중요도":"낮음","아이콘":"\u0001","설명":"월드의 동작에 문제가 되지 않는 수준의 각종 정보(Info)"},{"중요도":"중간","아이콘":"\u0001","설명":"메이커에서 권하지 않는 방식이거나 문제가 발생할 확률이 높은 경우 발생하는 경고(Warning)"},{"중요도":"높음","아이콘":"\u0001","설명":"해결하지 않으면 확정적으로 문제가 발생하는 오류(Error)"}]

## 크리에이터 로그

크리에이터가 월드 제작 과정에서 log 함수를 사용해 남기는 로그를 말합니다. 크리에이터의 의도대로 월드가 잘 작동하고 있는지 확인할 때 사용합니다. log() 함수는 매개 변수로 넘겨진 값을 콘솔 창에 출력합니다. 변수나 프로퍼티 값, 또는 함수의 리턴 값들을 콘솔 창에 출력하여 확인할 수 있습니다. 예를 들어 스크립트 컴포넌트가 실행될 때 "Hello Maple World"라는 로그를 남겨보겠습니다.
    
    
    @Component
    script WorldGreetingLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
        log("Hello Maple World")
        end
    end
    

위와 같이 작성한 후  시작을 눌러 테스트하면 콘솔 창에서 로그를 확인할 수 있습니다. [png](1653635780944b306b67d58ac48f68585d42061a8ae00)

### 크리에이터 로그 함수 종류

크리에이터는 세 가지 종류의 로그 함수를 자신의 상황에 맞게 정의해 사용할 수 있습니다.

[{"로그 함수":"log()","설명":"로그의 아이콘이 정보(Info)\u0001로 표시됩니다."},{"로그 함수":"log_warning()","설명":"로그의 아이콘이 경고(Warning) \u0001 로 표시됩니다."},{"로그 함수":"log_error()","설명":"로그의 아이콘이 오류(Error)\u0001로 표시됩니다."}]
    
    
    @Component
    script TestLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
        log("test_info")
        log_warning("test_warning")
        log_error("test_error")
        end
    end
    

위와 같이 작성한 후  시작을 눌러 테스트하면 콘솔 창에서 로그를 확인할 수 있습니다. [png](16546769028283859434d3a424558adaf5c5164899732)

> Tip. 월드를 제작하다 보면 의도대로 잘 진행되는지 확인하기 위해 로그를 수시로 남기게 됩니다. 하지만 플레이 테스트 도중 너무 많은 로그가 쌓이면 오히려 확인해야 할 로그를 놓칠 수도 있습니다. 불필요한 로그는 정리해가며 월드를 제작하기를 권장합니다.

# 로그의 확인

로그는 메이커의 콘솔 창에서 확인할 수 있습니다. 메이커의 상단 메뉴 - Panels - Console을 클릭하면 콘솔 창이 열립니다. 콘솔은 아래와 같이 콘솔과 빌드 콘솔로 나뉩니다.

## 콘솔

콘솔에는 플레이 테스트 도중에 발생한 정보, 경고, 오류 로그가 출력됩니다. [png](1654137093143eb77525627fd4de5b7fc28d2c98e7d97)

[{"번호":"\u0001","설명":"콘솔 창에 남아있는 로그를 삭제합니다. Clear 오른쪽에 확장 버튼을 눌러 Clear on Play를 활성화하고, \u0001 시작 버튼을 누르면 콘솔 창에 남아있던 로그를 자동으로 삭제하고 시작합니다."},{"번호":"\u0001","설명":"버튼을 누르면 중복 로그를 하나로 합쳐줍니다.  \u0001 영역에 합쳐진 총 개수가 나옵니다."},{"번호":"\u0001","설명":"실행 공간(Client \/ Server) 별로 로그를 모아볼 수 있습니다."},{"번호":"\u0001","설명":"로그를 검색합니다."},{"번호":"\u0001","설명":"\u0001 정보 로그의 총 개수를 확인할 수 있습니다.  이 버튼을 활성화하면 \u0001 영역에 \u0001 정보가 보이고 해제하면 보이지 않습니다."},{"번호":"\u0001","설명":"\u0001 경고 로그의 총 개수를 확인할 수 있습니다.  이 버튼을 활성화하면 \u0001 영역에 \u0001 경고가 보이고 해제하면 보이지 않습니다."},{"번호":"\u0001","설명":"\u0001 오류 로그의 총 개수를 확인할 수 있습니다.  이 버튼을 활성화하면 \u0001 영역에 \u0001 오류가 보이고 해제하면 보이지 않습니다."},{"번호":"\u0001","설명":"로그의 심각도와 기록된 시간, 실행 공간과 세부 내용을 확인할 수 있습니다."},{"번호":"\u0001","설명":"중복 로그가 몇 개 합쳐져 있는지 개수를 볼 수 있습니다."},{"번호":"\u0001","설명":"\u0001 에서 특정 로그를 선택하면 해당 로그에 대한 자세한 정보를 볼 수 있습니다. 스크립트 에러일 경우, 링크를 누르면 스크립트의 해당 라인으로 이동합니다. 엔티티일 경우, \u0001 Hierarchy에서 해당 엔티티가 선택됩니다."}]

## 빌드 콘솔

제작 중인 월드의 스크립트나 로직, 데이터 등에서 발생한 정보, 경고, 오류 로그가 출력됩니다. [png](1676446566144a6c7151a74c84728887bfcbcddf511a4)

[{"번호":"\u0001","설명":"Current scrip Only 버튼을 활성화하면 현재 스크립트에서 발생한 로그만 모아볼 수 있습니다."},{"번호":"\u0001","설명":"로그를 검색합니다."},{"번호":"\u0001","설명":"\u0001 정보 로그의 총 개수를 확인할 수 있습니다.  이 버튼을 활성화하면 \u0001 영역에 \u0001 정보가 보이고 해제하면 보이지 않습니다."},{"번호":"\u0001","설명":"\u0001 경고 로그의 총 개수를 확인할 수 있습니다.  이 버튼을 활성화하면 \u0001 영역에 \u0001 경고가 보이고 해제하면 보이지 않습니다."},{"번호":"\u0001","설명":"\u0001 오류 로그의 총 개수를 확인할 수 있습니다.  이 버튼을 활성화하면 있으면 \u0001 영역에 \u0001 오류가 보이고 해제하면 보이지 않습니다."},{"번호":"\u0001","설명":"로그의 종류와 내용을 확인할 수 있습니다."},{"번호":"\u0001","설명":"\u0001 에서 특정 로그를 선택하면 해당 로그에 대한 자세한 정보를 볼 수 있습니다. 스크립트 에러일 경우, 링크를 누르면 스크립트의 해당 라인으로 이동합니다. 엔티티일 경우, \u0001 Hierarchy에서 해당 엔티티가 선택됩니다."}]

# 출시 월드 콘솔

크리에이터는 출시된 월드에서 콘솔을 열고 로그를 확인할 수 있습니다. 월드의 스크립트나 로직, 데이터 등에서 발생한 정보, 경고, 오류 로그가 출력됩니다.

[png](1735021134960de6269099c084e1ebd3ebe4c18796a69)

[{"번호":"\u0001","설명":"콘솔 창에 남아있는 로그를 삭제합니다."},{"번호":"\u0001","설명":"콘솔을 접고 펼 수 있습니다."},{"번호":"\u0001","설명":"콘솔을 최소화된 크기로 변경합니다."},{"번호":"\u0001","설명":"로그를 txt 파일로 저장합니다. 저장 위치: C:\\\Users\\\사용자명\\\AppData\\\LocalLow\\\nexon\\\MapleStory Worlds\\\ConsoleLogs\\\월드ID"},{"번호":"\u0001","설명":"콘솔 창의 투명도를 조절할 수 있습니다."},{"번호":"\u0001","설명":"Clear on play를 활성화하면 남아있던 로그를 삭제하고 로그 출력을 시작합니다."},{"번호":"\u0001","설명":"버튼을 누르면 중복 로그를 하나로 합쳐줍니다."},{"번호":"\u0001","설명":"정보, 경고, 오류 로그의 총 개수를 확인할 수 있습니다."},{"번호":"\u0001","설명":"로그를 검색합니다."}]

# 로그의 활용

스크립트를 작성하고 플레이 테스트를 하다 보면 크리에이터의 생각대로 단번에 잘 작동하는 경우는 많지 않습니다. 크리에이터는 스크립트에 로그를 적절히 활용해 월드의 문제점을 보다 빠르게 파악하고 수정할 수 있습니다. 로그를 활용하여 시행착오를 줄이고 보다 효율적으로 스크립트를 작성해봅시다.

> 더 알아보기 로그와 함께 디버그 기능을 적절히 활용하면 스크립트 오류를 보다 빠르고 정확하게 해결할 수 있습니다. 도 함께 참고해봅시다.