LowCode (Mendix) Advanced/Track Application Behavior with Logging

The Components of a Log Message Explained

Caryou 2024. 10. 21. 17:55

학습 목표

이 모듈을 마치면 다음을 수행할 수 있습니다.

  • 로그 메시지의 소스 필드의 역할을 설명하세요
  • 로그 레벨의 개념을 설명하세요
  • 다양한 로그 수준과 그 중요성을 식별합니다.
  • Studio Pro에서 로그 수준 변경
  • 로그 노드의 개념을 설명하세요
  • Mendix가 제공하는 다양한 로그 노드와 해당 역할을 나열합니다.
  • Studio Pro 및 Mendix Portal에서 각 로그 노드에 대한 로그 수준을 설정합니다.

Mendix 로그 소스

[ 그림 1 ]

로그 메시지의 소스 필드  클라우드에서 생성된 로그에만 존재합니다. 이 필드의 정확한 내용은 사용하는 클라우드에 따라 다를 수 있습니다. 로그 메시지를 생성한 Mendix 런타임의 특정 인스턴스를 보여줍니다. 이는 다중 서버 환경에서 오류를 분석할 때 유용할 수 있습니다. 앱의 단일 인스턴스를 실행하는 경우 안전하게 무시할 수 있습니다.

Mendix 로그 수준

로그 메시지를 작성하면 성능에 영향을 미친다는 점도 기억하는 것이 중요합니다. 메시지 하나에 대한 영향은 무시할 수 있지만, 앱에서 메시지를 자주 로깅하는 경우 빠르게 누적될 수 있습니다. 로그 수준은 이러한 균형을 찾는 데 도움이 됩니다. 

  • Critical: 이 수준은 가장 심각한 메시지에 사용되며, 애플리케이션이 제대로 작동하지 못하게 할 수 있는 오류를 나타냅니다.

 

  • Error: 애플리케이션이 일부 기능을 수행하지 못하게 하는 문제가 발생했음을 나타내는 메시지에 사용됩니다.

 

  • Warning: 예상치 못한 일이 발생했거나 어떤 문제로 인해 가까운 미래에 애플리케이션이 실행되지 않을 것임을 나타냅니다.

 

  • Info: 정상 작동 중 주목할 만한 이벤트를 보고합니다.

 

  • Debug: 문제를 진단할 때 사용됩니다.

 

  • Trace: 사용 가능한 가장 자세하거나 자세한 로그 수준입니다.

 

로그 수준 변경

[ 그림 2 ]

Mendix Portal에서 이 옵션은 Deploy > Environments > View Live Log 에서 찾을 수 있습니다. 그런 다음 Displayed Log Levels 옵션을 사용하여 로그 수준에 따라 표시되는 로그를 변경할 수 있습니다 .

[ 그림 3 ]
[ 그림 4 ]

Mendix 로그 노드

로그 노드는 애플리케이션의 어느 부분이 로그 메시지를 생성했는지를 나타내며, 로그 메시지를 해석하는 방법에 대한 귀중한 맥락을 제공합니다. 예를 들어 로그 메시지가 애플리케이션이 객체를 생성하지 못했다는 사실을 경고한다고 가정해 보겠습니다. 해당 로그 메시지가 마이크로플로에 의해 생성된 경우, 로그 노드는 마이크로플로를 살펴보도록 지시합니다. 로그 메시지가 데이터그리드에 의해 생성된 경우, 조사에 대한 접근 방식이 상당히 다를 것입니다. Mendix에서 가장 중요한 로그 노드를 알게 되면 어떤 로그 수준을 설정하고 어떤 애플리케이션 영역을 조사해야 하는지 알 수 있어 로그 메시지를 해석하는 데 도움이 됩니다.

 

Mendix의 로그 노드는 중앙 로깅 구성 요소에 동적으로 등록됩니다. 이는 전체 런타임을 업데이트하지 않고도 로그 노드를 추가할 수 있으므로 큰 유연성을 제공합니다. 이는 사용자가 직접 만들 때 유용합니다. 단점은 Mendix 앱에서 마주칠 수 있는 모든 로그 노드의 명확한 목록이 없다는 것입니다. Mendix 런타임에서 사용하는 로그 노드 목록이 있으며 설명서에서 찾을 수 있습니다 . 가장 많이 사용되는 로그 노드 중 몇 가지를 찾을 수 있습니다.

 

 

마이크로플로우 엔진

이 로그 노드에서 보고된 메시지는 모두 마이크로플로우와 관련이 있으며, 마이크로플로우에서 발생할 수 있는 오류에 대한 로그 메시지도 포함됩니다. 이 로그 노드가 로그 수준 추적 으로 설정된 경우 실행되는 마이크로플로우의 모든 단계를 볼 수 있습니다. 이는 오류가 발생하기 전에 실행된 작업을 볼 수 있으므로 프로덕션에서만 존재하는 문제를 디버깅할 때 이상적일 수 있습니다. 하지만 추적 로그 수준은 앱 환경을 빠르게 압도할 수 있으므로 현명하게 사용하세요.

 

 

커넥션버스

이 로그 노드는 애플리케이션의 데이터베이스 연결에 대한 일반 정보를 보고합니다. 연결의 특정 부분을 분석할 수 있도록 이 연결의 특정 부분을 처리하는 관련 로그 노드가 있습니다.  ConnectionBus 로 시작하기 때문에 알아볼 수 있습니다  . 이러한 로그 노드의 이름은 ConnectionBus 로 시작하고 그 뒤에 밑줄과 해당 로그 노드가 보고하는 내용을 설명하는 사양이 옵니다.

  • ConnectionBus_Mapping : XPath와 SQL 간 변환기에서 사용됨
  • ConnectionBus_Retrieve : 데이터 검색 구성 요소에서 사용됨
  • ConnectionBus_Security : 보안 엔진이 데이터에 액세스할 때 사용함
  • ConnectionBus_Update : 데이터 업데이트 구성 요소에서 사용됨
  • ConnectionBus_Validation : 데이터베이스의 엔터티를 관리하는 구성 요소에서 사용됨

 

REST_Publish  및  REST_Consume

이러한 각 로그 노드는 앱이 REST API와 통신하는 것을 보고합니다. 상상할 수 있듯이 Publish는 노출하는 모든 것을 보고하는 반면 Consume은 REST를 통해 앱으로 가져오는 데이터에 초점을 맞춥니다. 이 로그 노드의 좋은 기능은  REST_Consume  로그 노드를  trace 로 설정하면 들어오는 데이터를 검사할 수 있다는 것입니다 . 이를 통해 데이터를 올바르게 수신하고 있는지 확인할 수 있으며 디버깅에 큰 도움이 될 수 있습니다. 

 

이제 로그 노드에 대해 더 잘 이해했으니 로그 분석 도구에서 이를 어떻게 사용할 수 있는지 살펴보겠습니다. 마이크로플로가 올바르게 실행되는지 모니터링하고 싶다고 가정해 보겠습니다. 로그 수준이 Error 인 로그 메시지를 추적하는 것이 매우 유용할 것입니다 . 모든 오류를 모니터링하는 경우 마이크로플로의 오류는 물론 다른 모든 오류도 캡처합니다. MicroflowEngine 로그 노드 에만 Error를 설정하면 마이크로플로와 관련된 오류만 캡처할 수 있습니다. 이렇게 하면 마이크로플로 중 하나가 제대로 작동하지 않을 때 특별히 트리거되는 경고를 설정할 수 있습니다. 

 

로그 노드에 대한 로그 수준 설정

[ 그림 5 ]

이 화면에 액세스하려면 애플리케이션이 로컬에서 실행 중일 때 콘솔 창에서 Advacned > Set Log Levels  클릭합니다 .

 

Mendix Portal의 로그 수준

Mendix 포털에서 각 환경에 대한 로그 수준을 설정할 수 있습니다. Mendix 포털의 Deploy 섹션 에서 Environments 링크를 클릭하여 환경에 액세스할 수 있습니다. 로그 수준을 변경하려는 환경에 대한  Details 버튼을 클릭할 수 있습니다.

[ 그림 6 ]

세부 정보  페이지에  도달하면  Loglevels  탭을 클릭하여 해당 환경의 로그 수준을 찾습니다. 각 노드에 대해 개별적으로 로그 수준을 설정할 수 있습니다. 여기에서 설정한 로그 수준은 재설정할 때까지 설정된 상태로 유지됩니다. 

[ 그림 7 ]

 

출처 : https://academy.mendix.com/link/paths/104/Track-Application-Behavior-with-Logging