Skip to content

Commit 2d722b0

Browse files
committed
sistema de analise de logs, somente por cli
1 parent 5e71f60 commit 2d722b0

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed

app/logs/index.php

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
<?php
2+
/**
3+
* Analisador de Logs de Erro
4+
*
5+
* Este script analisa o arquivo de log de erros (logs/error.log) e gera um relatório
6+
* que mostra os erros mais comuns agrupados por domínio. É útil para identificar
7+
* padrões de falhas e problemas recorrentes em diferentes domínios.
8+
*
9+
* Funcionamento:
10+
* 1. Lê o arquivo de log linha por linha
11+
* 2. Extrai a URL e a mensagem de erro de cada linha
12+
* 3. Agrupa os erros por domínio
13+
* 4. Conta a frequência de cada tipo de erro
14+
* 5. Exibe um relatório formatado
15+
*
16+
* Uso:
17+
* php logs/index.php
18+
*
19+
* Formato esperado do log:
20+
* [DATA HORA] URL: http://exemplo.com - Error: Mensagem de erro
21+
*/
22+
23+
// Verifica se está sendo executado via CLI
24+
if (php_sapi_name() !== 'cli') {
25+
die('Este script só pode ser executado via linha de comando.');
26+
}
27+
28+
// Caminho para o arquivo de log
29+
$logFile = __DIR__ . '/error.log';
30+
31+
// Verifica se o arquivo de log existe
32+
if (!file_exists($logFile)) {
33+
die("Arquivo de log não encontrado: $logFile\n");
34+
}
35+
36+
$errors = [];
37+
38+
// Lê o arquivo de log
39+
$lines = file($logFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
40+
41+
foreach ($lines as $line) {
42+
// Extrai URL e mensagem de erro usando expressão regular
43+
if (preg_match('/URL: (https?:\/\/[^\s]+) - Error: (.+)$/', $line, $matches)) {
44+
$url = $matches[1];
45+
$error = $matches[2];
46+
47+
// Extrai o domínio da URL
48+
$domain = parse_url($url, PHP_URL_HOST);
49+
50+
// Inicializa o array do domínio se não existir
51+
if (!isset($errors[$domain])) {
52+
$errors[$domain] = [];
53+
}
54+
55+
// Conta ocorrências de erro para este domínio
56+
if (!isset($errors[$domain][$error])) {
57+
$errors[$domain][$error] = 0;
58+
}
59+
$errors[$domain][$error]++;
60+
}
61+
}
62+
63+
// Exibe os resultados
64+
echo "Análise de Erros por Domínio:\n";
65+
echo "============================\n\n";
66+
67+
foreach ($errors as $domain => $domainErrors) {
68+
echo "Domínio: " . $domain . "\n";
69+
echo "-------------------------\n";
70+
71+
foreach ($domainErrors as $error => $count) {
72+
echo "- " . $error . ": " . $count . " ocorrência(s)\n";
73+
}
74+
echo "\n";
75+
}

0 commit comments

Comments
 (0)