Plantilla - subflujo de grabadora

Intermedio

Este es unDevOpsflujo de automatización del dominio deautomatización que contiene 11 nodos.Utiliza principalmente nodos como Code, Supabase, ErrorTrigger, ExecuteWorkflow, ExecuteWorkflowTrigger. Usar Supabase y niveles de estilo Log4j2 para crear un sistema de registro estructurado

Requisitos previos
  • URL y Clave de API de Supabase

Categoría

Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "id": "0twZGM6kPlG2rFsv",
  "meta": {
    "instanceId": "313b93d489cbc0ae87ad93f25c395bbdc59c46c632d00f395c3586a8fbbb7a34",
    "templateCredsSetupCompleted": true
  },
  "name": "TEMPL - Logger Sub-Workflow",
  "tags": [],
  "nodes": [
    {
      "id": "d8485aa8-429a-4eca-804b-2e2b5ed1a61e",
      "name": "Nota adhesiva",
      "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": "Nota adhesiva1",
      "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": "Nota adhesiva2",
      "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": "Disparador de error",
      "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": "Nota adhesiva3",
      "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
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Intermedio - DevOps

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Información del flujo de trabajo
Nivel de dificultad
Intermedio
Número de nodos11
Categoría1
Tipos de nodos6
Descripción de la dificultad

Adecuado para usuarios con experiencia intermedia, flujos de trabajo de complejidad media con 6-15 nodos

Autor
Elodie Tasia

Elodie Tasia

@ladypixl

Web 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.

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34