템플릿 - 레코드어 서브 작업 흐름
중급
이것은DevOps분야의자동화 워크플로우로, 11개의 노드를 포함합니다.주로 Code, Supabase, ErrorTrigger, ExecuteWorkflow, ExecuteWorkflowTrigger 등의 노드를 사용하며. Supabase와 Log4j2 스타일 레벨을 사용하여 구조화된 로그 시스템을 만들기
사전 요구사항
- •Supabase URL과 API Key
카테고리
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "0twZGM6kPlG2rFsv",
"meta": {
"instanceId": "313b93d489cbc0ae87ad93f25c395bbdc59c46c632d00f395c3586a8fbbb7a34",
"templateCredsSetupCompleted": true
},
"name": "TEMPL - Logger Sub-Workflow",
"tags": [],
"nodes": [
{
"id": "d8485aa8-429a-4eca-804b-2e2b5ed1a61e",
"name": "스티키 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
-784,
-48
],
"parameters": {
"color": 4,
"width": 816,
"height": 1248,
"content": "## Centralized Logging with Supabase (Log4j2-style)\n\n\nThis workflow provides a simple yet powerful logging solution for n8n, inspired by Log4j2's log levels. \n\nIt enables you to send structured log entries (DEBUG, INFO, WARN, ERROR, FATAL) directly to a Supabase PostgreSQL database. Whether you're tracking workflow executions, node-level issues, or custom debugging events, this template offers a clean and scalable way to store and query logs from across your automation stack — perfect for monitoring, debugging, or building analytics dashboards.\n\n\nYou need first to setup Supabase database and credentials:\n\n\n### 1. Supabase Configuration\n\n- Create an enumerated type (in Database -> Database Management -> Enumerated Types):\n\t- Name: **log_level_type**\n\t- Values: TRACE, DEBUG, INFO, WARN, ERROR, FATAL\n\n\n- Create a table **logs** with following fields (in Database -> Database Management -> Tables):\n\t- id #int8 (leave by default)\n\t- created_at timestamp (leave by default)\n\t- workflow_name text (deactivate the \"Is Nullable\" option)\n\t- node_name text (deactivate the \"Is Nullable\" option)\n\t- execution_id text (deactivate the \"Is Nullable\" option)\n\t- log_level log_level_type (deactivate the \"Is Nullable\" option)\n\t- message text (deactivate the \"Is Nullable\" option)\n \t- metadata json\n\n\n- If you prefer the SQL scripts:\n\n```\n-- Enum type for log_level\ncreate type log_level_type as enum ('TRACE','DEBUG','INFO','WARN','ERROR','FATAL');\n \n-- logs table\ncreate table publi c.logs (\n id bigserial primary key,\n created_at timestamp with time zone default now() not null,\n workflow_name text not null,\n node_name text not null,\n execution_id text not null,\n log_level log_level_type not null,\n message text not null,\n metadata jsonb\n);\n```\n\n\n\n### 2. Create Credentials to your Supabase Account in N8N\n\nhttps://docs.n8n.io/integrations/builtin/credentials/supabase/\n\n\n"
},
"typeVersion": 1
},
{
"id": "80068177-98b8-46bf-bfb6-74613e8ce905",
"name": "스티키 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
48,
-48
],
"parameters": {
"color": 6,
"width": 672,
"height": 400,
"content": "## SUB-WORKFLOW\n"
},
"typeVersion": 1
},
{
"id": "a7fc9373-b69d-4b44-a1ec-6ab987f442b1",
"name": "When Log Traced",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
192,
96
],
"parameters": {
"workflowInputs": {
"values": [
{
"name": "workflow_name"
},
{
"name": "node_name"
},
{
"name": "execution_id"
},
{
"name": "log_level"
},
{
"name": "message"
},
{
"name": "metadata",
"type": "object"
}
]
}
},
"typeVersion": 1.1
},
{
"id": "efde8a30-d04e-4c3d-a9e7-a689cad53e8b",
"name": "Create Log",
"type": "n8n-nodes-base.supabase",
"position": [
416,
96
],
"parameters": {
"tableId": "logs",
"dataToSend": "autoMapInputData"
},
"credentials": {
"supabaseApi": {
"id": "4kNhR3z2qk4eUvOY",
"name": "Supabase account"
}
},
"typeVersion": 1
},
{
"id": "9ffc0d43-de4f-498f-918b-7075ef9404a2",
"name": "스티키 노트2",
"type": "n8n-nodes-base.stickyNote",
"position": [
48,
800
],
"parameters": {
"color": 7,
"width": 672,
"height": 400,
"content": "## Usage Example : FATAL log from an error handler\n\nThis is a generic error handler workflow that you can configure in a workflow settings."
},
"typeVersion": 1
},
{
"id": "aed41c4a-37d9-4d69-99f6-8f1ac4b9604d",
"name": "오류 트리거",
"type": "n8n-nodes-base.errorTrigger",
"disabled": true,
"position": [
96,
992
],
"parameters": {},
"typeVersion": 1
},
{
"id": "8708f89c-3c24-4a79-9228-9d30dcfcb470",
"name": "Log Fatal",
"type": "n8n-nodes-base.code",
"disabled": true,
"position": [
304,
992
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "const e = $json; // Error Trigger\nreturn {\n \"workflow_name\": e.workflow?.name ?? $workflow.name,\n \"node_name\": e.execution?.lastNodeExecuted ?? $prevNode.name,\n \"execution_id\": e.execution?.id ?? $execution.id,\n \"log_level\": \"FATAL\",\n \"message\": e.execution?.error?.message ?? 'Unknown error', \n \"metadata\": e\n};"
},
"typeVersion": 2
},
{
"id": "c04e954e-f560-4240-b6f2-940e9922b5ab",
"name": "스티키 노트3",
"type": "n8n-nodes-base.stickyNote",
"position": [
48,
384
],
"parameters": {
"color": 7,
"width": 672,
"height": 400,
"content": "## Usage Example : log a DEBUG or INFO message\n\nCustomize the log_level, message and optional metadata.\nUse inside a workflow to trace info and debug messages."
},
"typeVersion": 1
},
{
"id": "f2beed08-2ade-4250-bdab-370939d8397e",
"name": "Call Logger SubWorkflow 1",
"type": "n8n-nodes-base.executeWorkflow",
"disabled": true,
"position": [
512,
992
],
"parameters": {
"options": {
"waitForSubWorkflow": false
},
"workflowId": {
"__rl": true,
"mode": "list",
"value": "0twZGM6kPlG2rFsv",
"cachedResultName": "TEMPL - Logger Sub-Workflow"
},
"workflowInputs": {
"value": {},
"schema": [],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": true
}
},
"typeVersion": 1.2
},
{
"id": "13f0d706-7f4e-4d97-bc90-2ab8ebce390e",
"name": "Log Info",
"type": "n8n-nodes-base.code",
"disabled": true,
"position": [
208,
560
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": " return {\n \"workflow_name\": $workflow.name,\n \"node_name\": $prevNode.name || \"Unknown node\",\n \"execution_id\": $execution.id,\n \"log_level\": \"INFO\",\n \"message\": \"Insert your message here\", \n \"metadata\": {\n \"attr1\": \"value1\",\n \"attr2\": 123\n }\n }"
},
"typeVersion": 2
},
{
"id": "2bb9b8a3-876f-4246-8f41-81163dae799a",
"name": "Call Logger SubWorkflow 2",
"type": "n8n-nodes-base.executeWorkflow",
"disabled": true,
"position": [
400,
560
],
"parameters": {
"options": {
"waitForSubWorkflow": false
},
"workflowId": {
"__rl": true,
"mode": "list",
"value": "0twZGM6kPlG2rFsv",
"cachedResultName": "TEMPL - Logger Sub-Workflow"
},
"workflowInputs": {
"value": {
"message": "={{ $json.message }}",
"metadata": "={{ $json.metadata }}",
"log_level": "={{ $json.log_level }}",
"node_name": "={{ $json.node_name }}",
"execution_id": "={{ $json.execution_id }}",
"workflow_name": "={{ $json.workflow_name }}"
},
"schema": [
{
"id": "workflow_name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "workflow_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "node_name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "node_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "execution_id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "execution_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "log_level",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "log_level",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "message",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "message",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "metadata",
"type": "object",
"display": true,
"removed": false,
"required": false,
"displayName": "metadata",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": true
}
},
"typeVersion": 1.2
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "00769a5f-87e6-423a-a420-36ca80479403",
"connections": {
"13f0d706-7f4e-4d97-bc90-2ab8ebce390e": {
"main": [
[
{
"node": "2bb9b8a3-876f-4246-8f41-81163dae799a",
"type": "main",
"index": 0
}
]
]
},
"8708f89c-3c24-4a79-9228-9d30dcfcb470": {
"main": [
[
{
"node": "f2beed08-2ade-4250-bdab-370939d8397e",
"type": "main",
"index": 0
}
]
]
},
"Error Trigger": {
"main": [
[
{
"node": "8708f89c-3c24-4a79-9228-9d30dcfcb470",
"type": "main",
"index": 0
}
]
]
},
"a7fc9373-b69d-4b44-a1ec-6ab987f442b1": {
"main": [
[
{
"node": "efde8a30-d04e-4c3d-a9e7-a689cad53e8b",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급 - 데브옵스
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
에러 알림기-v1-데이터베이스 없음
Telegram, Slack, 그리고 다른 통신 도구를 통해 중앙 집중식 오류 모니터링과 알림을 수행합니다.
Code
Gmail
Slack
+
Code
Gmail
Slack
13 노드Andrew
데브옵스
자동화된 n8n 워크플로우 백업至 GitHub 및 삭제 추적
삭제 추적이 포함된 GitHub 자동화 n8n 워크플로우 백업
If
N8n
Set
+
If
N8n
Set
31 노드Marcial Ambriz
데브옵스
Typebot 플로우와 GitHub 양방향 동기화, Typebot API 사용
Typebot API를 활용한 Typebot 플로우와 GitHub 양방향 동기화
If
Set
Code
+
If
Set
Code
31 노드Marcial Ambriz
데브옵스
Telegram-n8n-지휘관
Telegram 로봇 명령을 통해 n8n 인스턴스를 원격 제어
If
N8n
Set
+
If
N8n
Set
67 노드Arthur Braghetto
데브옵스
GitHub 동기화 대시보드 - V2
提交 기록과 롤백 기능을 갖춘 GitHub 워크플로우 버전 관리 대시보드
If
N8n
Set
+
If
N8n
Set
94 노드Eduard
데브옵스
워크플로우 통계
🦅 워크플로우 대시보드를 통해 n8n 인스턴스 전체 개요를 확인하세요!
N8n
Set
Xml
+
N8n
Set
Xml
31 노드Eduard
데브옵스
워크플로우 정보
난이도
중급
노드 수11
카테고리1
노드 유형6
저자
Elodie Tasia
@ladypixlWeb designer & AI automation creator. I build clean, conversion-ready sites and n8n workflows that take your content from idea to publish, on autopilot, in your voice. Grab my templates or message me for a custom build.
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유