커스텀 로거
나만의 로거 만들기
오류를 찾기 위해 위에 나열된 도구가 충분하지 않은 경우 항상 자신의 로거를 만들고 필요한 모든 것을 구현할 수 있습니다. 예를 들어, 이벤트에 대한 일반적인 설명 외에 이 이벤트를 트리거한 사용자 및 해당 액세스 수준에 대한 정보를 추가하는 로거를 생성해 보겠습니다.
로거 데이터 모델
이를 위해 먼저 데이터베이스에서 모델을 생성해 보겠습니다. 세 개의 필수 필드가 있는 매우 간단한 모델이 필요합니다.
- info (text) - 이벤트에 대한 일반 정보
- user (integer) - 사용자 ID
- access (array string) - 사용자 그룹(여러 개 있을 수 있음)
로거 비즈니스 프로세스
그런 다음 데이터베이스에 로그를 작성하는 비즈니스 프로세스를 생성합니다. 그 임무는 이벤트에 대한 정보를 수신하고 사용자에 대한 정보로 보완하고 최종 결과를 데이터베이스에 저장하는 것입니다.
사용자에 대한 정보를 얻으려면 Auth: Get current user 블록을 사용하십시오. 실행을 시작한 끝점에서 Middleware Token Auth 이 활성화된 경우에만 결과를 사용자 모델로 나타낼 수 있습니다.
Expand User 확장을 사용하여 결과를 확장하고 필수 필드를 가져옵니다. 우리의 경우 ID , Login 및 Groups 입니다. 처음 두 개를 사용하는 것은 아주 진부합니다. 메일 형식에서 표준 String ( To String 블록로)로 Login 을 변환하기만 하면 됩니다.
사용자 그룹의 경우 상황은 다소 복잡합니다. Enum 형식으로 저장됩니다. 이것은 텍스트 값이 아니라 데이터베이스에 식별자 목록만 저장하는 열거형입니다. 이 경우 값 1은 관리자 그룹( Admins )에 해당하고 값 2는 사용자 그룹( Users )에 해당합니다.
우리의 임무는 이 식별자를 해독하고 결과를 편리한 텍스트 데이터 형태로 쓰는 것입니다. 이를 위해서는 다음이 필요합니다.
- 사용자 그룹에 대한 텍스트 정보를 기록할 변수를 선언합니다. String Array 와 Set Variable 블록을 사용해 봅시다.
- For each loop 블록으로 루프를 시작합니다. 사용자 그룹의 배열을 받은 다음 각 반복에서 다음 그룹을 텍스트 값으로 변환하고 배열에 추가합니다.
- Switch 블록을 사용하여 사용자 그룹을 확인하고 결과에 따라 프로세스를 추가로 지시합니다.
- String 및 Set Variable 블록을 사용하여 사용자 그룹의 필수 값을 변수에 저장합니다.
- Append Array 및 Set Variable 블록을 사용하여 결과를 배열에 추가하고 루프 시작 전에 선언된 변수에 저장합니다.
루프가 완료되면 Concat Strings (Multiple) 블록을 사용하여 분산된 데이터에서 최종 문자열을 형성해야 합니다. 이 문자열은 Text 로 변환되어 로그에 기록됩니다.
마지막으로 할 일은 log 모델을 생성하고 데이터베이스에 쓰는 것입니다.
결과 BP는 다음과 같아야 합니다.
로거 엔드포인트
비즈니스 프로세스가 준비되었습니다. 이제 끝점을 만들어야 합니다. 이를 위해 POST /log/ 엔드포인트의 시스템 비즈니스 프로세스를 방금 생성된 비즈니스 프로세스로 교체합니다.
이제 우리 자신의 로그가 완전히 준비되었습니다. 모듈의 맨 처음으로 돌아가 Basic functions 비즈니스 프로세스로 돌아가 표준 로그를 직접 만든 로그로 바꿀 수 있습니다.
이제 계산이 시작될 때마다 이 이벤트의 바로 그 사실에 대한 정보뿐만 아니라 어떤 사용자가 그 일을 했는지에 대한 정보가 특수 로그에 기록됩니다. Swagger 에서 결과를 확인할 수 있습니다.
좋습니다. 우리 로그가 정말 작동합니다. 이제 이벤트, 사용자 로그인 및 액세스 권한에 대한 정보가 포함됩니다.
가능한 오류 및 권장 조치
결과적으로 가능한 오류 변형과 이를 수정하기 위한 조치를 구성합니다.
- 비즈니스 프로세스 자체의 오류. 단계별 검증을 위해 로그를 사용하는 것이 좋습니다. 따라서 특정 비즈니스 프로세스 블록을 실행한다는 사실과 해당 블록이 사용하는 모든 매개 변수를 입력과 출력 모두에서 확인할 수 있습니다.
- 서버에 요청을 보내는 동안 오류가 발생했습니다. 이렇게 하려면 브라우저에서 Developer Tools 를 사용하십시오. 요청이 전송되었다는 사실을 확인하고 구조를 구문 분석하고 수신된 응답을 볼 수 있습니다.
- 요청 형식이 잘못되었습니다. 철저한 테스트, 다양한 쿼리 옵션 확인, 매개변수 조합을 위해 Swagger 를 사용하는 것이 좋습니다.
- 요청 결과가 올바르게 구문 분석되지 않습니다. 결과가 없어야 할 곳에서 결과를 기다리는 경우가 발생합니다. 예를 들어 데이터베이스에 데이터를 추가하지만 이 데이터를 표시하는 테이블에서는 업데이트하지 않습니다. 각 구성 요소에는 해당 비즈니스 프로세스가 필요하며 이 프로세스가 올바르게 구성되었는지 확인하십시오.