app->singleton('audit.logger', function ($app) { $logger = new Logger('audit'); $driver = env('AUDIT_LOG_DRIVER', 'cloudwatch'); if ($driver === 'cloudwatch') { // 1. Configure AWS Client $config = [ 'region' => _env('AWS_DEFAULT_REGION', 'ap-south-1'), 'version' => _env('CLOUDWATCH_VERSION', 'latest'), 'credentials' => [ 'key' => _env('CLOUDWATCH_ACCESS_KEY'), 'secret' => _env('CLOUDWATCH_SECRET_KEY'), ] ]; $client = new CloudWatchLogsClient($config); $logGroup = _env('CLOUDWATCH_GROUP', '/aws/cf-admin-laravel'); // 2. Instantiate our Custom Handler $handler = new CloudWatchHandler($client, $logGroup); // 3. Push to Logger $logger->pushHandler($handler); } else { // Local Dev Fallback $logPath = storage_path('logs/audit.log'); $logger->pushHandler(new StreamHandler($logPath, Logger::INFO)); } return $logger; }); } }