codeflow-hub/logger
Composer 安装命令:
composer require 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.
README 文档
README
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
- ✅ 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.logpor padrão) - ✅ Notificações por email com
NativeMailerHandlerparaERROR+ - ✅ Notificações por Telegram com
TelegramBotHandlerparaCRITICAL+ - ✅ 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()eenableLogByTelegram() - ✅ Scripts de qualidade prontos (
composer test,composer phpstan, etc.)
Instalação
composer require codeflow-hub/logger
🚀 Uso Básico
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()
Logger::notice('Plan provisioning finished', [ 'workspace' => 'acme/app', 'elapsed' => '850ms' ]);
⚙️ Configuração (Opcional)
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.loge registra a partir deDEBUG.
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
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
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
| Método | Nível | Descrição | Email/Telegram |
|---|---|---|---|
debug() |
DEBUG | Informações detalhadas para desenvolvimento | ❌ |
info() |
INFO | Eventos informativos gerais | ❌ |
notice() |
NOTICE | Eventos significativos, porém normais | ❌ |
warning() |
WARNING | Avisos que não impedem execução | ❌ |
error() |
ERROR | Erros que exigem atenção | ✅ |
critical() |
CRITICAL | Falhas críticas do sistema | ✅ |
alert() |
ALERT | Ação imediata necessária | ✅ |
emergency() |
EMERGENCY | Sistema inutilizável | ✅ |
🔒 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
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
{
"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
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
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
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
- PHP >= 7.4
- Monolog ^2.0 | ^3.0
📄 Licença
Este projeto está licenciado sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
🤝 Contribuindo
- Fork o projeto
- Crie uma feature branch (
git checkout -b feature/amazing-feature) - Commit suas mudanças (
git commit -m 'Add amazing feature') - Push para a branch (
git push origin feature/amazing-feature) - Abra um Pull Request
📞 Suporte
- Issues: GitHub Issues
- Email: contato@codeflow.com.br
- Website: https://codeflow.com.br
Desenvolvido com ❤️ pela CodeFlow Hub
codeflow-hub/logger 适用场景与选型建议
codeflow-hub/logger 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 22 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 11 月 12 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「logging」 「security」 「email」 「monolog」 「psr-3」 「enterprise」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 codeflow-hub/logger 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 codeflow-hub/logger 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 codeflow-hub/logger 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Provide a way to secure accesses to all routes of an symfony application.
A Zend Framework module that sets up Monolog for logging in applications.
Asynchronous Sentry for Symfony - Fire and forget
It's a barebone security class written on PHP
Stackdriver handler for Monolog (codeinternetapplications/monolog-stackdriver Fork).
High-performance, zero-dependency PSR-3 logger for MonkeysLegion with structured logging, handlers, processors, and PHP 8.4 features.
统计信息
- 总下载量: 22
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 15
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-11-12