第 62 行包含代码 $factoryInstance->getLogger($loggerName)
private function __construct($loggerName)
{
$config = PayPalConfigManager::getInstance()->getConfigHashmap();
// Checks if custom factory defined, and is it an implementation of @PayPalLogFactory
$factory = array_key_exists('log.AdapterFactory', $config) && in_array('PayPal\Log\PayPalLogFactory', class_implements($config['log.AdapterFactory'])) ? $config['log.AdapterFactory'] : '\PayPal\Log\PayPalDefaultLogFactory';
/** @var PayPalLogFactory $factoryInstance */
$factoryInstance = new $factory();
$this->logger = $factoryInstance->getLogger($loggerName);
$this->loggerName = $loggerName;
}
如果您进一步查看代码,它正在寻找“log.AdapterFactory”设置。这通常不包含在配置文件中的 ApiContext 设置中。
将 log.AdapterFactory 设置插入到您决定创建的配置文件或引导文件中的 ApiContext 设置中。
这通常与您正在使用的 AdapterFactory 相关联。
Here 是来自 Github 存储库的一个非常有用的示例,说明了您可以与 PayPal 中提供的新记录器功能一起使用的各种设置。尤其是第 94 行
$apiContext->setConfig(
array(
'mode' => 'sandbox',
'log.LogEnabled' => true,
'log.FileName' => '../PayPal.log',
'log.LogLevel' => 'DEBUG', // PLEASE USE `INFO` LEVEL FOR LOGGING IN LIVE ENVIRONMENTS
'cache.enabled' => true,
//'cache.FileName' => '/PaypalCache' // for determining paypal cache directory
// 'http.CURLOPT_CONNECTTIMEOUT' => 30
// 'http.headers.PayPal-Partner-Attribution-Id' => '123123123'
//'log.AdapterFactory' => '\PayPal\Log\DefaultLogFactory' // Factory class implementing \PayPal\Log\PayPalLogFactory
)
);
您通常还必须使用官方 Paypal 推荐 here 创建一个类 MonologLogFactory。请记住在文件顶部相对于路径/文件夹/文件/位置包含合适的命名空间。下面是 Paypal 的代码:
use PayPal\Log\PayPalLogFactory;
use Psr\Log\LoggerInterface;
class MonologLogFactory implements PayPalLogFactory
{
/**
* Returns logger instance implementing LoggerInterface.
*
* @param string $className
* @return LoggerInterface instance of logger object implementing LoggerInterface
*/
public function getLogger($className)
{
$logger = new Monolog\Logger($className);
$logger->pushHandler(new Monolog\Handler\StreamHandler("mail.log"));
return $logger;
}
}
如果您仍然遇到问题,请仔细检查您是否确实将文件位于 C:\wamp32\www\projectfoldername\web\vendor\paypal\rest-api-sdk-php\lib\PayPal\Log\PayPalDefaultLogFactory on您的测试平台。我正在使用 wampserver。
如果文件不在此处,请确保您的 composer.json 文件下有 "paypal/rest-api-sdk-php": "*" 然后更新 composer。