본문 바로가기
IT/mendix

로깅을 통한 애플리케이션 동작 추적 - 로그 메시지

by 가능성1g 2024. 7. 31.
반응형

소개

Mendix를 사용하면 멋진 앱을 쉽게 빠르게 만들 수 있습니다. 내부적으로 Mendix는 앱 제작에 필요한 모든 작업을 수행합니다. 이는 앱 빌드와 관련된 복잡성을 숨겨주기 때문에 매우 좋습니다. 하지만 문제가 발생하면 어떻게 해야 할까요? 앱이 제대로 작동하지 않는 문제를 해결하기 위해 Mendix가 실제로 무엇을 하고 있는지 "내부"를 확인해야 하는 순간이 바로 이때입니다. 이때 로깅이 필요합니다. 

각 앱에는 앱을 실행하는 동안 Mendix의 다양한 컴포넌트가 수행하는 작업을 보고할 수 있는 로깅 기능이 탑재되어 있습니다. 이러한 로그 메시지를 효과적으로 사용하려면 로그 메시지가 어떻게 작성되고 어디에서 찾을 수 있는지 이해하는 것이 중요합니다. 이를 통해 오류를 분석하고 수정할 수 있습니다. 

이것은 디버깅과 매우 비슷하게 들리지만 중요한 차이점이 있습니다. 디버깅에서는 애플리케이션을 중지하여 특정 순간의 모든 세부 사항을 검사하는 반면, 로깅에서는 장기간에 걸쳐 일련의 작업을 검사할 수 있습니다. 로깅은 디버깅해야 할 위치를 결정하는 데 자주 사용됩니다. 이 둘은 종종 함께 사용되기 때문에 분명 밀접한 관계가 있지만 로깅은 다른 상황에서도 쉽게 적용될 수 있습니다. 

로그를 시작할 때 로그를 읽을 수 있어야 버그를 재현할 수 있으므로 버그를 더 쉽게 해결할 수 있습니다. 또한 애플리케이션이 정확히 무엇을 하고 있는지 이해하는 데 도움이 됩니다. 이제 프로젝트에서 로깅을 올바르게 적용하는 방법을 알아보겠습니다. 

 

로그 메시지의 구조

모든 로그 메시지는 일정한 패턴을 따르기 때문에 쉽게 읽고 분석할 수 있습니다. 각 메시지가 고유한 구조를 가지고 있다면 얼마나 어려울지 상상해 보세요. 메시지의 앞뒤를 파악할 수 없고 로그 분석 도구도 그다지 효과적이지 않을 것입니다. 

그러나 로그 메시지는 다양한 소스에서 생성될 수 있으며 각 소스에는 메시지 자체에 대한 고유한 요구 사항이 있을 것입니다. 따라서 로그 메시지는 구조화된 필드와 구조화되지 않은 필드의 두 가지 유형으로 나뉩니다. 로그의 처음 몇 개 필드는 구조화된 반면, 마지막 필드는 미리 정의된 구조가 없습니다. 

 

Mendix에서 사용되는 로그 템플릿과 다양한 로그 필드에 대한 설명은 아래에서 확인할 수 있습니다:

 

  • Timestamp: 로깅 컴포넌트에 의해 로그 메시지가 생성된 순간입니다.
  • Source: 로그 메시지를 생성한 앱의 특정 인스턴스입니다. 이는 앱이 클라우드에 배포된 경우에만 적용됩니다.
  • Log level: 앱이 메시지에 부여하는 중요도입니다.
  • Log node: 로그 메시지를 생성한 앱의 구성 요소입니다.
  • Log message: 발생한 상황을 자세히 설명하는 메시지입니다.

처음 네 개의 필드는 구조화되어 있으며 로그 분석 도구에서 로그 파일을 분석할 때 레코드를 집계하는 데 사용할 수 있습니다. 로그 메시지 필드는 주목할 만한 이벤트나 발생한 오류에 대한 자세한 정보를 제공하기 위한 것입니다. 또한 이 필드를 통해 개발자는 특정 메시지에 적합한 방식으로 모든 관련 정보를 전달할 수 있습니다. 

 

로그 메시지 필드는 특정 구조에 묶여 있지 않으므로 메시지를 주의 깊게 읽는 것이 중요합니다. 메시지를 로깅하는 이유는 메시지 길이에 영향을 미칩니다. 현재 상황을 보고하는 메시지는 일반적으로 짧지만, 문제를 보고하는 메시지는 일반적으로 매우 상세하고 장황합니다. 특히 예상치 못한 문제를 보고하는 메시지는 더욱 그렇습니다.

 

로그 메시지의 출처

이제 로그 메시지가 어떻게 구성되는지 이해했으니 이제 로그 메시지의 출처를 이해하는 것이 중요합니다. 이러한 로그 메시지를 생성하는 사람은 Mendix의 개발자와 프로젝트에 임포트한 모듈의 개발자입니다. 또한 앱 실행의 어느 시점에서 로그 메시지가 생성되는지, 로그 메시지의 내용은 무엇인지도 결정합니다. 예를 들어, 아래 이미지에 표시된 로그 메시지는 Mendix 클라이언트에서 새 로그인 요청이 수신될 때 트리거됩니다. 보시다시피 개발자는 로그인 요청이 수신된 시점을 알리고 요청의 출처에 대한 세부 정보를 포함해야 한다고 결정했습니다.

로그 메시지를 생성하는 Mendix 시스템 내 구성 요소의 몇 가지 예는 다음과 같습니다:

  • 마이크로플로우 엔진
  • 도메인 모델 엔진
  • 보안 엔진

Mendix 자체에서 생성된 로그 메시지 외에도 Mendix 마켓플레이스에서 생성하거나 가져온 모듈에서 로그 메시지가 발생할 수도 있습니다.

 

로그 메시지 위치

애플리케이션 로그의 위치는 앱이 실행되는 위치에 따라 다릅니다. 애플리케이션 개발을 시작할 때는 Studio Pro에서 확인할 수 있습니다. 앱이 로컬에서 실행 중이면 콘솔을 확인하여 앱의 로그 메시지를 찾을 수 있습니다.

 

콘솔이 활성화되어 있지 않은 경우 View > Console을 통해 활성화할 수 있습니다.

앱이 실행되고 있지 않으면 콘솔이 비어 있습니다. 이는 현재 로그 메시지를 전송할 실행 중인 앱이 없기 때문에 당연한 결과입니다.

 

 

Mendix 포털을 통해 온라인으로 로그를 볼 수도 있습니다. 로그는 Mendix 포털의 배포 페이지에서 찾을 수 있습니다. 각 환경마다 고유한 로그가 있으며 드롭다운을 사용하여 선택할 수 있습니다. 로그는 매일 로테이션되며 아카이브에서 사용할 수 있습니다. 또한 실시간 로그 보기를 선택하여 로그 메시지가 들어오는 대로 볼 수 있습니다.

반응형