2013-02-06 3 views
1

나는 다음과 같은 코드젠드 프레임 워크 로그

$db = new Zend\Db\Adapter\Adapter(array(
'driver' => $config->database->adapter, 
'database' => $config->database->params->dbname, 
'username' => $config->database->params->username, 
'password' => $config->database->params->password 
)); 

$paypalLog = array(
'transactionId' => 'transactionId', 
'transactionType' => 'transactionType', 
'paymentType' => 'paymentType', 
'orderTime' => 'orderTime', 
'currencyCode' => 'currencyCode', 
'feeAmt' => 'feeAmt', 
'taxAmt' => 'taxAmt', 
'paymentStatus' => 'paymentStatus', 
'pendingReason' => 'pendingReason', 
'reasonCode' => 'reasonCode' 
); 

$writer = new Zend\Log\Writer\Db($db, 'paypal', $paypalLog); 
$logger = new Zend\Log\Logger(); 
$logger->addWriter($writer); 
$logger->info($transactionId, 
    $transactionType, 
    $paymentType, 
    $orderTime, 
    $currencyCode, 
    $feeAmt,   
    $taxAmt, 
    $paymentStatus, 
    $pendingReason, 
    $reasonCode); 
?> 
나는 아래의 오류

Fatal error: Uncaught exception 'Zend\Log\Exception\InvalidArgumentException' with message '$extra must be an array or implement Traversable' in C:\xampp\htdocs\app\library\Zend\Log\Logger.php:236 Stack trace: #0 C:\xampp\htdocs\app\library\Zend\Log\Logger.php(333): Zend\Log\Logger->log(6, '2SH18664DB63910...', 'expresscheckout') #1 C:\xampp\htdocs\app\public\orderconfirm.php(124): Zend\Log\Logger->info('2SH18664DB63910...', 'expresscheckout', 'instant', '2013-02-06T10:4...', 'AUD', '0.52', '0.00', 'Completed', 'None', 'None') #2 {main} thrown in C:\xampp\htdocs\app\library\Zend\Log\Logger.php on line 236 

가 계속

을 사용하여 데이터베이스에 대한 페이팔에 대한 호출에서 반환 PHP 데이터를 기록하기 위해 노력하고있어 어떤 도움을 주셔서 감사합니다.

답변

0

내가 '추가'정보를 포함하는 배열을 구성하고 전송하여이 작업을 얻었다.

$data = array(
     'transactionId' => $transactionId, 
     'transactionType' => $transactionType, 
     'paymentType' => $paymentType, 
     'orderTime' => $orderTime, 
     'amt' => $amt, 
     'currencyCode' => $currencyCode, 
     'feeAmt' => $feeAmt, 
     'taxAmt' => $taxAmt, 
     'paymentStatus' => $paymentStatus, 
     'pendingReason' => $pendingReason, 
     'reasonCode' => $reasonCode 
     ); 

    $mapping = array(
     'message' => 'message', 
     'extra' => $data); 

    $writer = new Zend\Log\Writer\Db($db, 'paypal', $paypalLog); 
    $logger = new Zend\Log\Logger(); 
    $logger->addWriter($writer); 
    $logger->info($mapping);  
2

로거를 잘못 사용하고 있습니다.

/** 
* @param string $message 
* @param array|Traversable $extra 
* @return Logger 
*/ 
public function info($message, $extra = array()) 
{ 
    return $this->log(self::INFO, $message, $extra); 
} 

당신은 probanly하지 배열이나 횡단 가능 객체 인 "추가"필드로 $의 transactionType 전달됩니다

가 받아 두 paramters이있다.

이 시도

는, 배열은 로그 파일의 문자열로 변환해야합니다

$logger->info(paypalLog); 
// or convert it to a string before logging.. it 
$logger->info(implode(',', $paypalLog)); 
+0

감사합니다. Andrew, 저에게 올바른 방향으로 가고 있습니다. – LJT