Source of file MongoDB.php
Size: 3,452 Bytes - Last Modified: 2014-03-12T23:21:18+01:00
/home/theseer/Downloads/ZendFramework-2.3.0/library/Zend/Log/Writer/MongoDB.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 | <?php /** * Zend Framework (http://framework.zend.com/) * * @link http://github.com/zendframework/zf2 for the canonical source repository * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ namespace Zend\Log\Writer; use DateTime; use Mongo; use MongoClient; use MongoDate; use Traversable; use Zend\Log\Exception; use Zend\Log\Formatter\FormatterInterface; use Zend\Stdlib\ArrayUtils; /** * MongoDB log writer. */ class MongoDB extends AbstractWriter { /** * MongoCollection instance * * @var MongoCollection */ protected $mongoCollection; /** * Options used for MongoCollection::save() * * @var array */ protected $saveOptions; /** * Constructor * * @param Mongo|MongoClient|array|Traversable $mongo * @param string|MongoDB $database * @param string $collection * @param array $saveOptions * @throws Exception\InvalidArgumentException */ public function __construct($mongo, $database = null, $collection = null, array $saveOptions = array()) { if ($mongo instanceof Traversable) { // Configuration may be multi-dimensional due to save options $mongo = ArrayUtils::iteratorToArray($mongo); } if (is_array($mongo)) { parent::__construct($mongo); $saveOptions = isset($mongo['save_options']) ? $mongo['save_options'] : array(); $collection = isset($mongo['collection']) ? $mongo['collection'] : null; $database = isset($mongo['database']) ? $mongo['database'] : null; $mongo = isset($mongo['mongo']) ? $mongo['mongo'] : null; } if (null === $collection) { throw new Exception\InvalidArgumentException( 'The collection parameter cannot be empty' ); } if (null === $database) { throw new Exception\InvalidArgumentException( 'The database parameter cannot be empty' ); } if (!($mongo instanceof MongoClient || $mongo instanceof Mongo)) { throw new Exception\InvalidArgumentException(sprintf( 'Parameter of type %s is invalid; must be MongoClient or Mongo', (is_object($mongo) ? get_class($mongo) : gettype($mongo)) )); } $this->mongoCollection = $mongo->selectCollection($database, $collection); $this->saveOptions = $saveOptions; } /** * This writer does not support formatting. * * @param string|FormatterInterface $formatter * @return WriterInterface */ public function setFormatter($formatter) { return $this; } /** * Write a message to the log. * * @param array $event Event data * @return void * @throws Exception\RuntimeException */ protected function doWrite(array $event) { if (null === $this->mongoCollection) { throw new Exception\RuntimeException('MongoCollection must be defined'); } if (isset($event['timestamp']) && $event['timestamp'] instanceof DateTime) { $event['timestamp'] = new MongoDate($event['timestamp']->getTimestamp()); } $this->mongoCollection->save($event, $this->saveOptions); } } |