acesseseucondominio / laravel-logger
Laravel logger for PHP / Laravel
Requires
- php: ^7.4|^8.0
- illuminate/support: ^8.0|^9.0|^10.0|^11.0
- monolog/monolog: ^2.0|^3.0
Requires (Dev)
- phpunit/phpunit: ~6.0|~9.0|~10.0
This package is not auto-updated.
Last update: 2025-05-06 07:55:31 UTC
README
Package para padronização de logs no formato JSON para aplicações Laravel. Compatível com Laravel 8 (PHP 7.4) até Laravel 11 (PHP 8.2).
Instalação
Adicione o repositório privado ao seu composer.json:
{ "repositories": [ { "type": "vcs", "url": "git@github.com:AcesseSeuCondominio/laravel-logger.git" } ] }
Instale o pacote via composer:
composer require acesseseucondominio/laravel-logger:"dev-main"
Em projetos Laravel sem auto-discovery:
Se o seu projeto não usar auto-discovery, adicione o LoggerServiceProvider ao array providers em config/app.php:
AcesseSeuCondominio\Logger\LoggerServiceProvider::class,
Configuração
O pacote automaticamente registra o arquivo de configuração config/log.php
. Você pode publicar o arquivo com:
php artisan vendor:publish --provider="AcesseSeuCondominio\Logger\LoggerServiceProvider" --tag="config"
Ou criar manualmente seguindo este exemplo:
<?php return [ /** * Nome da aplicação para identificação nos logs */ 'application' => env('APP_NAME', 'laravel'), /** * ID da build para identificação nos logs */ 'build_id' => env('LOG_BUILD_ID', ''), /** * Git commit para identificação nos logs */ 'git_commit' => env('LOG_GIT_COMMIT', ''), /** * Ativar ou desativar a captura de dados de autenticação */ 'auth' => env('LOG_AUTH', true), /** * Ativar ou desativar a inclusão de detalhes do usuário autenticado * Útil para ambientes com restrições de LGPD/GDPR */ 'auth_details' => env('LOG_AUTH_DETAILS', true), /** * Lista adicional de chaves sensíveis que serão ocultadas nos logs */ 'sensitive_keys' => [ // 'cpf', // 'rg', // 'cnpj', ], /** * Nível mínimo de log */ 'level' => env('LOG_LEVEL', 'debug'), ];
Formato dos logs
O pacote gera logs no formato JSON com os seguintes campos padrão:
@timestamp
: Timestamp em formato UTCapplication
: Nome da aplicaçãoenvironment
: Ambiente (development, production, etc.)git_commit
: Hash do commit gitmessage
: Mensagem de loglevel
: Nível de log (numérico)level_name
: Nível de log (texto)
Campos adicionais do contexto são extraídos automaticamente quando presentes:
exception
: Objeto de exceçãocode
: Código de erroservice
: Nome do serviçoerro_string
: String de erroaction
: Ação executadauser_id
: ID do usuárioduration
: Duração da operaçãoquery
: Query SQL executada
Segurança e Proteção de Dados Sensíveis
O logger inclui proteções para dados sensíveis:
Ofuscação automática
As seguintes informações são automaticamente ofuscadas nos logs:
- Senhas (
password
,senha
) - Tokens de autenticação (
token
,access_token
,refresh_token
) - Chaves de API (
api_key
,apikey
,api-key
) - Credenciais (
secret
,private_key
,client_secret
,credentials
) - Cabeçalhos de autorização (
authorization
)
Configuração de segurança adicional
Para projetos que precisam atender a LGPD ou outras regulamentações de privacidade:
-
Desabilitar detalhes de autenticação:
LOG_AUTH_DETAILS=false
-
Adicionar chaves sensíveis personalizadas: Adicione chaves específicas para seu projeto no arquivo de configuração:
'sensitive_keys' => [ 'cpf', 'rg', 'cnpj', 'cartao', // adicione outras chaves sensíveis específicas do seu projeto ],
-
Configurar nível mínimo de log: Em produção, recomenda-se usar níveis mais altos para reduzir volume e exposição:
LOG_LEVEL=error
Boas práticas
- Nunca registre dados sensíveis completos (mesmo ofuscados)
- Para contextos de depuração, use níveis detalhados apenas em ambientes de desenvolvimento
- Revise os logs regularmente para identificar possíveis vazamentos de dados
Resolução de Problemas
Erro "Call to undefined method Illuminate\Support\Facades\Auth::user()"
Se você encontrar este erro durante a inicialização da aplicação ou em comandos artisan:
PHP Fatal error: Uncaught Error: Call to undefined method Illuminate\Support\Facades\Auth::user()
Existem duas soluções possíveis:
-
Desativar a coleta de dados de autenticação:
No seu arquivo
.env
, adicione:LOG_AUTH=false
-
Para handlers de log personalizados:
Se você estiver implementando handlers de log personalizados, verifique se você está tentando acessar
Auth::user()
durante a inicialização da aplicação. Adicione uma verificação semelhante a:if (app()->runningInConsole() && !app()->runningUnitTests()) { // Não tente acessar Auth::user() aqui }
Ou envolva o código em um bloco try/catch para evitar erros fatais.