The Mangopay PHP SDK supports PSR-3 compliant logging, allowing you to integrate with any logging library that implements the Psr\Log\LoggerInterface. This enables you to track API calls, debug issues, and monitor your integration’s behavior.
use Monolog\Logger;use Monolog\Handler\StreamHandler;use MangoPay\MangoPayApi;// Create a logger instance$logger = new Logger('mangopay-sdk');$logger->pushHandler( new StreamHandler('/var/log/mangopay.log', Logger::DEBUG));// Initialize MangoPayApi$api = new MangoPayApi();$api->Config->ClientId = 'your-client-id';$api->Config->ClientPassword = 'your-api-key';$api->Config->TemporaryFolder = '/tmp/';// Attach the logger to the SDK$api->setLogger($logger);// Now all API calls will be logged$user = $api->Users->Get('user_123456');
Configure different log levels based on your environment:
use Monolog\Logger;use Monolog\Handler\StreamHandler;$logger = new Logger('mangopay-sdk');// Development: Log everything$logger->pushHandler( new StreamHandler('/var/log/mangopay-debug.log', Logger::DEBUG));// Production: Log only warnings and errors$logger->pushHandler( new StreamHandler('/var/log/mangopay-error.log', Logger::WARNING));
Use multiple handlers to route logs to different destinations:
use Monolog\Logger;use Monolog\Handler\StreamHandler;use Monolog\Handler\RotatingFileHandler;use Monolog\Handler\FirePHPHandler;$logger = new Logger('mangopay-sdk');// Log to file$logger->pushHandler( new StreamHandler('/var/log/mangopay.log', Logger::INFO));// Log to rotating files (new file each day)$logger->pushHandler( new RotatingFileHandler( '/var/log/mangopay/sdk.log', 30, // Keep 30 days Logger::INFO ));// Log to browser console (development only)if ($_ENV['APP_ENV'] === 'development') { $logger->pushHandler(new FirePHPHandler());}$api = new MangoPayApi();$api->setLogger($logger);
use Monolog\Logger;use Monolog\Handler\StreamHandler;use Monolog\Formatter\LineFormatter;$logger = new Logger('mangopay-sdk');$handler = new StreamHandler('/var/log/mangopay.log', Logger::DEBUG);// Custom format$formatter = new LineFormatter( "[%datetime%] %channel%.%level_name%: %message% %context%\n", "Y-m-d H:i:s");$handler->setFormatter($formatter);$logger->pushHandler($handler);$api = new MangoPayApi();$api->setLogger($logger);
use Monolog\Logger;use Monolog\Handler\SyslogHandler;$logger = new Logger('mangopay-sdk');$logger->pushHandler( new SyslogHandler('mangopay', LOG_USER, Logger::INFO));$api = new MangoPayApi();$api->setLogger($logger);
use Monolog\Logger;use Monolog\Handler\StreamHandler;use Monolog\Handler\NativeMailerHandler;$logger = new Logger('mangopay-sdk');// Log everything to file$logger->pushHandler( new StreamHandler('/var/log/mangopay.log', Logger::DEBUG));// Email critical errors$logger->pushHandler( new NativeMailerHandler( 'admin@example.com', 'Mangopay Critical Error', 'alerts@example.com', Logger::CRITICAL ));$api = new MangoPayApi();$api->setLogger($logger);
// Check file permissionsif (!is_writable('/var/log/mangopay.log')) { throw new Exception('Log file is not writable');}// Verify logger is attachedif ($api->getLogger() === null) { echo "Logger not attached to SDK";}