PHPackages                             codeflow-hub/logger - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Logging &amp; Monitoring](/categories/logging)
4. /
5. codeflow-hub/logger

ActiveLibrary[Logging &amp; Monitoring](/categories/logging)

codeflow-hub/logger
===================

Sistema enterprise de logs PSR-3 compliant com suporte a múltiplos handlers (arquivo, email, Telegram). Wrapper para Monolog com contexto estruturado e sanitização automática de dados sensíveis.

1.0.9(6mo ago)021MITPHPPHP &gt;=7.4

Since Nov 12Pushed 6mo agoCompare

[ Source](https://github.com/CodeFlow-Hub/Logger)[ Packagist](https://packagist.org/packages/codeflow-hub/logger)[ RSS](/packages/codeflow-hub-logger/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (5)Versions (8)Used By (0)

CodeFlow Logger
===============

[](#codeflow-logger)

[![Latest Stable Version](https://camo.githubusercontent.com/5cb0cf677fa0e2d4ef97c54f1efc984c5c850d9b045e0971cafebbff9bd4a6e7/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f636f6465666c6f772d6875622f6c6f676765722e737667)](https://packagist.org/packages/codeflow-hub/logger)[![Total Downloads](https://camo.githubusercontent.com/702ee33d64a16b512f69627de4f91ddd58b39df87e17a6297785aaa3a89a4f32/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f636f6465666c6f772d6875622f6c6f676765722e737667)](https://packagist.org/packages/codeflow-hub/logger)[![License](https://camo.githubusercontent.com/1d726213576471b7e18d7f0ea636028cc004ae7a257911382c0d50a0d16c06a4/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f636f6465666c6f772d6875622f6c6f676765722e737667)](https://packagist.org/packages/codeflow-hub/logger)[![PHP Version Require](https://camo.githubusercontent.com/e286eec0d985856480bcea899da4565dc7443d849968925ca0defbae22aed49d/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f636f6465666c6f772d6875622f6c6f676765722e737667)](https://packagist.org/packages/codeflow-hub/logger)

Sistema enterprise de logs **PSR-3 compliant** com suporte a múltiplos handlers (arquivo, email, Telegram).

Wrapper estático para **Monolog** com contexto estruturado automático, sanitização de dados sensíveis e helper global.

✨ Recursos
----------

[](#-recursos)

- ✅ **PSR-3 Compliant** – cobre os 8 níveis oficiais (`debug` → `emergency`)
- ✅ **Logging em arquivo** com rotação diária automática (`PROJECT_ROOT/logs/file-YYYY-MM-DD.log` por padrão)
- ✅ **Notificações por email** com `NativeMailerHandler` para `ERROR+`
- ✅ **Notificações por Telegram** com `TelegramBotHandler` para `CRITICAL+`
- ✅ **Contexto estruturado automático** (request\_id, session\_id, IP, user-agent)
- ✅ **Sanitização recursiva** de dados sensíveis (password, token, secret, senha, hash)
- ✅ **Configuração fluente** via `Logger::settings()`, `enableLogByEmail()` e `enableLogByTelegram()`
- ✅ **Scripts de qualidade** prontos (`composer test`, `composer phpstan`, etc.)

Instalação
----------

[](#instalação)

```
composer require codeflow-hub/logger
```

🚀 Uso Básico
------------

[](#-uso-básico)

### Logging simples

[](#logging-simples)

```
use CodeFlowHub\Logger\Logger;

// Logs informativos
Logger::info("User authentication started", ['user_id' => 123]);
Logger::debug("Database query executed", ['query' => 'SELECT * FROM users']);

// Logs de erro (dispara email/telegram se configurado)
Logger::error("Database connection failed", ['error' => $e->getMessage()]);
Logger::critical("Payment gateway unavailable", ['gateway' => 'stripe']);
```

### Níveis PSR-3 com `notice()`

[](#níveis-psr-3-com-notice)

```
Logger::notice('Plan provisioning finished', [
  'workspace' => 'acme/app',
  'elapsed' => '850ms'
]);
```

⚙️ Configuração (Opcional)
--------------------------

[](#️-configuração-opcional)

### Diretório, arquivos e níveis

[](#diretório-arquivos-e-níveis)

```
use CodeFlowHub\Logger\Logger;

Logger::settings([
  'dir_logs'            => __DIR__ . '/storage/logs', // pasta alternativa
  'file_log_label'      => 'app-' . date('Y-m-d') . '.log',
  'level_file_log'      => Logger::LEVEL_DEBUG,        // grava apenas DEGUG+
  'level_email_log'     => Logger::LEVEL_ERROR,    // emails apenas para ERROR+
  'level_telegram_log'  => Logger::LEVEL_CRITICAL,       // telegram para CRITICAL+
]);
```

> Se nenhum ajuste for feito, o logger usa `PROJECT_ROOT/logs/file-YYYY-MM-DD.log` e registra a partir de `DEBUG`.

### Notificações por email

[](#notificações-por-email)

```
use CodeFlowHub\Logger\Logger;

// Configurar ANTES do primeiro uso do logger
Logger::enableLogByEmail(
    'noreply@app.com',           // Email remetente
    'admin@app.com',             // Email destinatário
    'Sistema: Erro Crítico'      // Assunto (opcional)
);

// Agora erros ERROR+ serão enviados por email automaticamente
Logger::error("Database connection failed");
```

### Notificações por Telegram

[](#notificações-por-telegram)

```
use CodeFlowHub\Logger\Logger;

// Configurar ANTES do primeiro uso do logger
Logger::enableLogByTelegram(
    '123456:ABC-DEF...',         // Token do bot (via BotFather)
    '-1001234567890'             // Chat ID do canal/grupo
);

// Agora erros CRITICAL+ serão enviados para o Telegram automaticamente
Logger::critical("Cache system failure", ['cache_type' => 'redis']);
```

### Tratando falhas de inicialização

[](#tratando-falhas-de-inicialização)

```
if ($fail = Logger::fail()) {
  echo $fail->getMessage();
}
```

Use `Logger::fail()` para inspecionar problemas como diretório de log sem permissão ou parâmetros inválidos de configuração. O método retorna `null` quando não há erros pendentes.

📊 Níveis PSR-3 Suportados
-------------------------

[](#-níveis-psr-3-suportados)

MétodoNívelDescriçãoEmail/Telegram`debug()`DEBUGInformações detalhadas para desenvolvimento❌`info()`INFOEventos informativos gerais❌`notice()`NOTICEEventos significativos, porém normais❌`warning()`WARNINGAvisos que não impedem execução❌`error()`ERRORErros que exigem atenção✅`critical()`CRITICALFalhas críticas do sistema✅`alert()`ALERTAção imediata necessária✅`emergency()`EMERGENCYSistema inutilizável✅🔒 Segurança e Sanitização
-------------------------

[](#-segurança-e-sanitização)

O logger **automaticamente sanitiza dados sensíveis** antes de gravar nos logs:

```
Logger::info("User login attempt", [
    'email' => 'user@example.com',
    'password' => '123456',           // Será exibido como [redacted]
    'api_token' => 'abc123',          // Será exibido como [redacted]
    'user_secret' => 'secret123'      // Será exibido como [redacted]
]);
```

**Campos automaticamente sanitizados:** password, token, secret, senha, hash (inclusive em arrays aninhados). Strings longas são truncadas para 120 caracteres para facilitar a leitura.

📁 Estrutura dos Logs
--------------------

[](#-estrutura-dos-logs)

Os logs são salvos em `PROJECT_ROOT/logs/file-YYYY-MM-DD.log` por padrão. Use `Logger::settings(['file_log_label' => 'app-' . date('Y-m-d') . '.log'])` para adequar o nome ao seu padrão:

```
logs/
├── file-2024-01-15.log
├── file-2024-01-16.log
└── file-2024-01-17.log

```

### Formato do Log

[](#formato-do-log)

```
{
  "message": "User authentication started",
  "context": {
    "user_id": 123,
    "request_id": "req_65a1b2c3d4e5f.12345",
    "session_id": "abc123def456",
    "ip_address": "192.168.1.1",
    "user_agent": "Mozilla/5.0...",
    "file": "/path/to/file.php",
    "line": 42
  },
  "level": 200,
  "level_name": "INFO",
  "channel": "app",
  "datetime": "2024-01-17T10:30:45.123456+00:00"
}
```

📚 Exemplos prontos
------------------

[](#-exemplos-prontos)

```
php examples/basic_usage.php
php examples/advanced_usage.php
```

Os exemplos cobrem desde o onboarding rápido até fluxos de produção (contexto HTTP, sanitização, métricas e notificações). Eles são ideais para validar o pacote em ambientes locais ou pipelines.

🛠️ Desenvolvimento
------------------

[](#️-desenvolvimento)

### Scripts Composer úteis

[](#scripts-composer-úteis)

```
composer install            # Instala dependências (prod + dev)
composer test               # PHPUnit
composer test-coverage      # PHPUnit com cobertura em build/coverage
composer phpstan            # Análise estática (level 7)
composer cs-check           # CodeSniffer (PSR-12)
composer cs-fix             # Auto-fix de estilo
composer quality            # Executa cs-check + phpstan + test
```

### Estrutura do projeto

[](#estrutura-do-projeto)

```
src/
├── Logger.php          # Facade principal
└── helpers.php         # Função helper global
tests/
├── LoggerTest.php      # Cobertura de sanitização e configuração
└── bootstrap.php       # Bootstrap dos testes
examples/
├── basic_usage.php     # Tour rápido
└── advanced_usage.php  # Cenários completos

```

📋 Requisitos
------------

[](#-requisitos)

- **PHP** &gt;= 7.4
- **Monolog** ^2.0 | ^3.0

📄 Licença
---------

[](#-licença)

Este projeto está licenciado sob a licença MIT. Veja o arquivo [LICENSE](LICENSE) para mais detalhes.

🤝 Contribuindo
--------------

[](#-contribuindo)

1. Fork o projeto
2. Crie uma feature branch (`git checkout -b feature/amazing-feature`)
3. Commit suas mudanças (`git commit -m 'Add amazing feature'`)
4. Push para a branch (`git push origin feature/amazing-feature`)
5. Abra um Pull Request

📞 Suporte
---------

[](#-suporte)

- **Issues:** [GitHub Issues](https://github.com/codeflow-hub/logger/issues)
- **Email:**
- **Website:**

---

Desenvolvido com ❤️ pela [CodeFlow Hub](https://github.com/codeflow-hub)

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance69

Regular maintenance activity

Popularity7

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity40

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

7

Last Release

184d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/b1a3b0ee45c8fc8813554ffeaaa1fc050071320f13b2757ea8bb18a0013f0e50?d=identicon)[CodeFlow-Hub](/maintainers/CodeFlow-Hub)

---

Top Contributors

[![CodeFlow-Hub](https://avatars.githubusercontent.com/u/118301238?v=4)](https://github.com/CodeFlow-Hub "CodeFlow-Hub (17 commits)")

---

Tags

psr-3loggingsecurityemailenterprisetelegrammonolog

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP\_CodeSniffer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/codeflow-hub-logger/health.svg)

```
[![Health](https://phpackages.com/badges/codeflow-hub-logger/health.svg)](https://phpackages.com/packages/codeflow-hub-logger)
```

###  Alternatives

[inpsyde/wonolog

Monolog-based logging package for WordPress.

183617.9k7](/packages/inpsyde-wonolog)[filips123/monolog-phpmailer

PHPMailer handler for Monolog

1365.6k3](/packages/filips123-monolog-phpmailer)[rahimi/monolog-telegram

A handler for Monolog that sends messages to Telegram Channels

6980.2k1](/packages/rahimi-monolog-telegram)[mero/telegram-handler

Monolog handler to send log by Telegram

36113.3k](/packages/mero-telegram-handler)[jacklul/monolog-telegram

Monolog handler that sends logs through Telegram bot to any chat in HTML format

2364.7k1](/packages/jacklul-monolog-telegram)[thecoder/laravel-monolog-telegram

Telegram Handler for Monolog

2939.5k](/packages/thecoder-laravel-monolog-telegram)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
