> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Avalie 30 bibliotecas de logging para sua stack

export const UseCaseHero = ({title, description, prompt, category, features, devinUrl, agent, intent, playbookId, type}) => {
  const encodedPrompt = encodeURIComponent(prompt || '');
  const tag = 'docs-use-case-gallery';
  const utm = 'utm_source=docs&utm_medium=use-case-gallery&utm_campaign=hero-cta';
  const agentParams = (agent ? '&agent=' + agent : '') + (intent ? '&intent=' + intent : '') + (playbookId ? '&playbookId=' + playbookId : '');
  const devinHref = type === 'schedule' ? 'https://app.devin.ai/settings/schedules/create?' + utm + agentParams + (prompt ? '&prompt=' + encodedPrompt : '') : type === 'review' ? 'https://app.devin.ai/review?' + utm : agent === 'ada' ? 'https://app.devin.ai/search?' + utm + '&noSubmit=true' + (prompt ? '&prompt=' + encodedPrompt : '') : devinUrl ? devinUrl.includes('?') ? devinUrl + '&' + utm + agentParams : devinUrl + '?' + utm + agentParams : prompt ? 'https://app.devin.ai/?tags=' + tag + '&' + utm + agentParams + '&prompt=' + encodedPrompt : 'https://app.devin.ai/?' + utm + agentParams;
  const buttonLabel = type === 'schedule' ? 'Schedule in Devin ↗' : type === 'review' ? 'Set Up Devin Review ↗' : agent === 'advanced' ? 'Try in Devin ↗' : agent === 'dana' ? 'Try in Dana ↗' : agent === 'ada' ? 'Try in Ask Devin ↗' : 'Try in Devin ↗';
  const featureList = features ? features.split(',').map(f => f.trim()) : [];
  return <div className="uc-hero">
      <div className="uc-hero-inner">
        <div className="uc-hero-left">
          <h1 className="uc-hero-title">{title}</h1>
          <p className="uc-hero-desc">{description}</p>
          <div>
            <a href={devinHref} target="_blank" rel="noopener noreferrer" className="try-in-devin-btn">
              {buttonLabel}
            </a>
          </div>
        </div>
        <div className="uc-hero-meta">
          <div className="uc-meta-item">
            <span className="uc-meta-label">Author</span>
            <span className="uc-meta-value">Cognition</span>
          </div>
          <div className="uc-meta-item">
            <span className="uc-meta-label">Category</span>
            <span className="uc-meta-value">{category}</span>
          </div>
          {featureList.length > 0 && <div className="uc-meta-item">
              <span className="uc-meta-label">Features</span>
              <span className="uc-meta-value">{featureList.join(', ')}</span>
            </div>}
        </div>
      </div>
    </div>;
};

export const PromptBlock = ({children, type, agent, intent, playbookId}) => {
  var utm = 'utm_source=docs&utm_medium=use-case-gallery&utm_campaign=prompt-block';
  var tag = 'docs-use-case-gallery';
  var agentParams = (agent ? '&agent=' + agent : '') + (intent ? '&intent=' + intent : '') + (playbookId ? '&playbookId=' + playbookId : '');
  var label = type === 'schedule' ? 'Schedule in Devin' : type === 'playbook' ? 'Create Playbook' : type === 'knowledge' ? 'Add to Knowledge' : agent === 'advanced' ? 'Try in Devin' : agent === 'dana' ? 'Try in Dana' : agent === 'ada' ? 'Try in Ask Devin' : 'Try in Devin';
  var buildUrl = function (text) {
    var encoded = encodeURIComponent(text);
    if (type === 'schedule') return 'https://app.devin.ai/settings/schedules/create?' + utm + agentParams + '&prompt=' + encoded;
    if (type === 'playbook') return 'https://app.devin.ai/settings/playbooks/create?' + utm + '&body=' + encoded;
    if (type === 'knowledge') return 'https://app.devin.ai/knowledge?' + utm + '&body=' + encoded;
    if (agent === 'ada') return 'https://app.devin.ai/search?' + utm + '&noSubmit=true&prompt=' + encoded;
    return 'https://app.devin.ai/?tags=' + tag + '&' + utm + agentParams + '&prompt=' + encoded;
  };
  const ref = React.useRef(null);
  const [href, setHref] = React.useState('#');
  React.useEffect(() => {
    if (!ref.current) return;
    var codeEl = ref.current.querySelector('pre code');
    if (codeEl) {
      var text = codeEl.textContent.trim();
      if (text) setHref(buildUrl(text));
    }
    var header = ref.current.querySelector('[data-component-part="code-block-header"]');
    if (header && !header.querySelector('.prompt-block-devin-link')) {
      var link = document.createElement('a');
      link.href = href;
      link.target = '_blank';
      link.rel = 'noopener noreferrer';
      link.className = 'prompt-block-devin-link';
      link.style.cssText = 'display:inline-flex;align-items:center;gap:6px;text-decoration:none;color:#fff;font-size:11px;font-weight:500;padding:4px 10px;border-radius:6px;white-space:nowrap;background:#317CFF;transition:background 0.2s;margin-left:8px;';
      link.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/><polyline points="15 3 21 3 21 9"/><line x1="10" y1="14" x2="21" y2="3"/></svg> ' + label;
      link.onmouseenter = function () {
        link.style.background = '#2968D9';
      };
      link.onmouseleave = function () {
        link.style.background = '#317CFF';
      };
      header.appendChild(link);
    }
    var existingLink = ref.current.querySelector('.prompt-block-devin-link');
    if (existingLink && href !== '#') existingLink.href = href;
  });
  return <div className="prompt-block" ref={ref}>{children}</div>;
};

<UseCaseHero title="Avalie 30 bibliotecas de logging para sua stack" description="Execute uma sessão do Devin por biblioteca para avaliar preços, desempenho e qualidade do SDK — depois consolide tudo em uma tabela comparativa ordenada." prompt="Estamos substituindo nosso pipeline de logging. Inicie um lote com 30 sessões paralelas do Devin — uma por biblioteca de logging — para pesquisar benchmarks de desempenho, faixas de preço, qualidade dos SDKs das linguagens e políticas de retenção. Compile todos os resultados em uma única planilha comparativa, ordenada pela adequação geral a uma stack de microsserviços em Node.js e Python." category="Otimização do Devin" features="Avançado" agent="advanced" intent="batch" />

<div className="uc-detail-wrapper">
  <Tip>Não quer configurar isso manualmente? Cole um link para esta página em uma sessão do Devin e peça que ele configure tudo para você.</Tip>

  <Steps>
    <Step title="Escreva um prompt de pesquisa usando um modelo padronizado">
      A chave para uma pesquisa paralela útil é dar a todas as sessões a mesma checklist. Cada sessão pesquisa uma biblioteca de forma independente, então o modelo garante que os resultados sejam diretamente comparáveis quando forem consolidados.

      Abra uma nova sessão do Devin a partir da [página inicial do Devin](https://app.devin.ai/?utm_source=docs\&utm_medium=use-case-gallery) ou use a página **Explore Advanced Capabilities** na página inicial do Devin para obter um template de prompt de pesquisa paralela.

      <PromptBlock agent="advanced" intent="batch">
        ```txt Parallel logging library evaluation theme={null}
        We're replacing our ELK stack with a modern logging solution for a
        Node.js + Python microservices architecture (~50 services, ~2 TB logs/day).
        Research these logging libraries and platforms in parallel — one session
        per library:

        Datadog Logs, Grafana Loki, AWS CloudWatch Logs, Google Cloud Logging,
        Splunk, New Relic Logs, Axiom, Better Stack (Logtail), Mezmo (LogDNA),
        Logz.io, Papertrail, Sumo Logic, Elastic Cloud, Scalyr (Dataset),
        Timber.io, Seq, Graylog, Fluentd, Vector, Logstash, Syslog-ng,
        OpenTelemetry Collector, Cribl, Coralogix, Honeycomb, Baselime,
        Highlight.io, Signoz, Hyperdx, Last9

        For each library, fill in this template:
        - Type: SaaS platform, self-hosted, or agent/collector
        - Pricing model and estimated monthly cost for 2 TB/day ingestion
        - Log retention options (hot, warm, cold tiers)
        - Node.js SDK: quality 1-5, auto-instrumentation support (yes/no)
        - Python SDK: quality 1-5, auto-instrumentation support (yes/no)
        - Query language and avg query latency for 7-day window
        - Alerting: built-in rules, anomaly detection (yes/no)
        - Notable limitations or common complaints from developer forums

        Output as a markdown report with the template filled in.
        ```
      </PromptBlock>
    </Step>

    <Step title="Revise e aprove as sessões propostas">
      Após o envio, o Devin analisa sua lista e propõe uma sessão para cada biblioteca. Você verá uma prévia como:

      ```
      Proposed sessions (30):
        1. Research Datadog Logs — pricing, SDKs, retention, alerting...
        2. Research Grafana Loki — pricing, SDKs, retention, alerting...
        3. Research AWS CloudWatch Logs — pricing, SDKs, retention, alerting...
        ...
      ```

      Revise a lista e clique em **Approve** para iniciar todas as sessões simultaneamente. Cada sessão é executada de forma independente — navegando no site da biblioteca, lendo a documentação, consultando fóruns de desenvolvedores e preenchendo o modelo.

      Se quiser pular ou adicionar bibliotecas, edite a lista antes de clicar em **Approve**. Você também pode anexar um [playbook](/pt-BR/product-guides/creating-playbooks) para garantir que todas as sessões sigam a mesma metodologia de pesquisa.
    </Step>

    <Step title="Colete e compare resultados">
      Depois que todas as sessões são concluídas, Devin mescla automaticamente os relatórios individuais em uma única comparação. O resultado segue o formato que você solicitou — é assim que fica a comparação consolidada em formato de planilha:

      ```
      ## Logging Library Comparison (Node.js + Python, 2 TB/day)

      | Library           | Type       | $/mo (2 TB/day) | Retention       | Node SDK | Python SDK | Query Lang   | Alerting     |
      |-------------------|------------|-----------------|-----------------|----------|------------|--------------|--------------|
      | Datadog Logs      | SaaS       | ~$5,400         | 15d hot, archive| 5/5      | 5/5        | Custom DSL   | Yes + anomaly|
      | Grafana Loki      | Self-host  | Infra only      | Configurable    | 4/5      | 4/5        | LogQL        | Via Grafana  |
      | Axiom              | SaaS       | ~$1,200         | 30d hot, 1yr    | 4/5      | 4/5        | APL          | Yes          |
      | Better Stack      | SaaS       | ~$890           | 30d default     | 5/5      | 4/5        | SQL-like     | Yes          |
      | Elastic Cloud     | SaaS/self  | ~$3,600         | ILM policies    | 5/5      | 5/5        | KQL / Lucene | Yes + ML     |
      | Signoz            | Self-host  | Infra only      | Configurable    | 4/5      | 4/5        | ClickHouse SQL| Yes         |
      | Coralogix         | SaaS       | ~$2,100         | Hot/warm/cold   | 4/5      | 3/5        | Lucene / SQL | Yes + anomaly|
      | ...               |            |                 |                 |          |            |              |              |

      ### Top 3 for a 50-service Node.js + Python stack:
      1. Axiom — lowest cost at scale, fast APL queries, solid SDKs
      2. Grafana Loki — zero license cost, pairs with existing Grafana dashboards
      3. Datadog Logs — best SDK auto-instrumentation, but expensive at 2 TB/day
      ```

      Você pode fazer perguntas adicionais na mesma sessão — ela mantém o contexto de todas as subsessões.

      Depois de escolher a melhor opção, você pode iniciar uma sessão do Devin diretamente a partir da mesma sessão para configurar a biblioteca no seu repositório:

      <PromptBlock>
        ```txt Set up Axiom logging in our monorepo theme={null}
        Set up Axiom as our logging solution across our Node.js Express and
        Python FastAPI services. Install the SDKs, configure structured
        logging with correlation IDs, add the AXIOM_API_TOKEN from env vars,
        and verify logs are flowing by hitting a test endpoint. Open a PR
        with the setup.
        ```
      </PromptBlock>
    </Step>

    <Step title="Aprofunde a análise dos finalistas">
      Depois que você tiver uma lista de selecionados, inicie sessões de acompanhamento direcionadas para uma avaliação mais aprofundada.

      <PromptBlock agent="advanced" intent="batch">
        ```txt Deep-dive top 3 logging solutions theme={null}
        Take Axiom, Grafana Loki, and Datadog Logs and do a deeper evaluation:
        - Build a proof-of-concept integration for each using our Node.js Express
          service and our Python FastAPI service
        - Ingest 10,000 sample log lines and measure ingestion latency
        - Run 5 realistic queries (error rate, P99 latency, trace correlation,
          free-text search, regex filter) and record response times
        - Document setup friction (account creation, SDK install, first log visible)
        Report which one was fastest to set up and queried most reliably.
        ```
      </PromptBlock>

      <PromptBlock agent="advanced" intent="batch">
        ```txt Apply the same pattern to APM tools theme={null}
        Use the same parallel research pattern to evaluate 15 APM / tracing
        platforms: Datadog APM, New Relic, Dynatrace, Honeycomb, Lightstep,
        Jaeger, Zipkin, Signoz, Grafana Tempo, AWS X-Ray, Google Cloud Trace,
        Elastic APM, Splunk APM, Highlight.io, Last9. Same template: pricing,
        SDK quality, query language, and notable limitations.
        ```
      </PromptBlock>
    </Step>

    <Step title="Dicas">
      ### Esse padrão funciona para qualquer avaliação técnica

      Pesquisa em paralelo não se limita a ferramentas de logging. Use essa abordagem para qualquer avaliação em que você precise dos mesmos dados sobre muitas opções — plataformas de CI/CD, serviços de feature flag, ORMs, provedores de nuvem ou frameworks de conformidade. Exemplo: "Pesquise essas 20 plataformas de CI/CD e compare velocidade de build, preços, opções self-hosted e qualidade da integração com o GitHub."

      ### Mantenha cada sessão limitada a 15-30 minutos

      Se uma única biblioteca demandar horas de investigação profunda, isso é um sinal de que ela deveria ter sua própria sessão focada, em vez de fazer parte de uma execução paralela. Sessões paralelas funcionam melhor quando cada item exige aproximadamente o mesmo nível de esforço.
    </Step>
  </Steps>
</div>
