JavaScriptMódulos e Errosdesafio

Sistema de log com módulos

Em aplicações reais, sistemas de log são essenciais para depuração e monitoramento. Bibliotecas como Winston e Pino usam arquitetura modular: você pode trocar o formato das mensagens (JSON, texto) ou o destino (console, arquivo) sem modificar a lógica central. Separar responsabilidades evita que uma mudança no formato quebre o envio dos logs.

O PROBLEMA

Sistema de log modular: core, formatters, transports. Combináveis.

EXEMPLO

import { criarLogger } from "./core.js";
const log = criarLogger({formatter:formatJSON, transport:consoleTransport});
log.info("Servidor iniciado")

SOBRE O CONCEITO

O exercício separa o sistema em três módulos: core.js (cria o logger), formatters.js (funções como formatJSON) e transports.js (funções como consoleTransport). O erro comum é o acoplamento — por exemplo, importar o transportador dentro do formatador. Isso cria dependência desnecessária: se você trocar o transportador, precisará alterar o formatador. A solução é que cada módulo cumpra seu papel: o formatador recebe um objeto de log e retorna uma string; o transportador recebe uma string e a envia. O núcleo combina ambos sem saber detalhes internos, usando import e export. Assim, você pode reusar e testar cada parte isoladamente.

RESOLUÇÃO

Mais exercícios de Módulos e Erros

JSM003 · BásicoTipos de erroJSM005 · BásicoError propertiesJSM006 · BásicoExport nomeadoJSM008 · BásicoImport * as
Ver todos os exercícios de JavaScript