오류 처리
워크플로 논리를 설계할 때, 발생할 수 있는 오류를 미리 고려해 우아하게 대응하는 것이 모범 사례입니다. 오류 워크플로를 설정하면 n8n이 워크플로 실행 실패 시 어떻게 반응할지 제어할 수 있습니다.
오류 디버깅
실패한 실행을 디버깅하려면 다음을 수행할 수 있습니다:
- 실행 기록을 확인하세요. 단일 워크플로의 기록 또는 사용자가 접근 권한이 있는 모든 워크플로의 기록을 볼 수 있습니다. 또한 마지막 실행 데이터를 현재 워크플로에 로드할 수도 있습니다.
- 로그 스트림을 활성화하세요.
오류 워크플로 생성 및 설정
각 워크플로마다 워크플로 설정에서 오류 워크플로를 지정할 수 있습니다. 이는 해당 워크플로 실행이 실패할 경우 자동으로 실행됩니다. 예를 들어, 워크플로에서 오류가 발생했을 때 이메일이나 Slack 알림을 보내는 등의 작업을 수행할 수 있습니다. 오류 워크플로는 반드시 Error Trigger 노드로 시작해야 합니다.
여러 워크플로에서 동일한 오류 워크플로를 공유할 수도 있습니다.
- 새 워크플로를 생성하고, 첫 번째 노드로 Error Trigger 노드를 추가합니다.
- 워크플로에 이름을 지정합니다(예:
Error Handler). - 저장을 클릭합니다.
- 이 오류 워크플로를 사용하고자 하는 대상 워크플로에서:
- 옵션
> 설정을 클릭합니다. - 오류 워크플로 항목에서 방금 생성한 워크플로(예: Error handler)를 선택합니다.
- 저장을 클릭합니다. 이후 이 워크플로에서 오류가 발생하면 연결된 오류 워크플로가 자동으로 실행됩니다.
- 옵션
오류 데이터
Error Trigger 노드가 수신하는 기본 오류 데이터는 다음과 같습니다:
[
{
"execution": {
"id": "...",
"url": "...",
"retryOf": null,
"error": {
"name": "NodeOperationError",
"message": "",
"cause": {},
"node": {}
},
"lastNodeExecuted": "Node With Error",
"mode": "manual"
},
"workflow": {}
}
]
다음 필드들은 항상 존재하지 않을 수 있습니다:
execution.id: 이 필드는 실행 내용이 데이터베이스에 저장된 경우에만 존재합니다. 오류가 메인 워크플로의 트리거 노드에서 발생한 경우, 워크플로 실행 자체가 시작되지 않으므로 이 필드는 존재하지 않습니다.execution.url: 이 필드는 실행 내용이 데이터베이스에 저장된 경우에만 존재합니다. 오류가 메인 워크플로의 트리거 노드에서 발생한 경우, 이 필드는 존재하지 않습니다.execution.retryOf: 현재 실행이 실패한 실행의 재시도일 경우에만 존재합니다.
오류가 워크플로의 후속 실행 단계가 아닌, 트리거 노드 자체에서 발생한 경우, 오류 워크플로로 전달되는 데이터 구조가 달라집니다. 이 경우 execution 필드에는 정보가 적고, 대신 trigger 필드에 더 많은 정보가 포함됩니다:
{
"trigger": {
"error": {
"name": "WorkflowActivationError",
"cause": {},
"timestamp": 1654609328787,
"message": "",
"node": {}
},
"mode": "trigger"
},
"workflow": {}
}
Stop and Error 노드를 사용하여 강제로 워크플로 실행 실패시키기
오류 워크플로를 생성하고 설정한 후, 일반적으로 노드 설정 오류나 워크플로 실행 중 메모리 부족 등의 이유로 실행이 실패하면 n8n은 자동으로 오류 워크플로를 실행합니다.
또한 워크플로에 Stop and Error 노드를 추가해, 특정 조건에서 실행을 강제로 실패시킴으로써 오류 워크플로를 트리거할 수도 있습니다.