* [ source, category ] Message * * * When one name is given between the brackets, the category will be set and the message has a default source: *
* [ category ] Message ** * Without any names between the brackets, the default category and source are used: *
* Message ** * The following properties are set after construction or after calling {@link parseMessage()}: * - message, contains the message without extra the additional information. * - source, contains either the default source or the source set in the incoming message. * - category, contains either the default category or the category set in the incoming message. * - severity, severity of the error. Which is ezcLog::NOTICE, ezcLog::WARNING, or ezcLog::ERROR. * * @package EventLog * @version 1.2beta1 * @access private */ class ezcLogMessage { /** * Holds the properties of this class. * * @var array(string=>mixed) */ protected $properties = array( "message" => "", "source" => "", "category" => "", "severity" => "" ); /** * Constructs the ezcLogMessage from the $message, $severity, $defaultSource and $defaultCategory. * * $message is parsed by parseMessage() and properties are set. * * @param string $message * @param int $severity * @param string $defaultSource Use this source when not given in the message itself. * @param string $defaultCategory Use this category when not give in the message itself. */ public function __construct( $message, $severity, $defaultSource, $defaultCategory ) { $this->parseMessage( $message, $severity, $defaultSource, $defaultCategory ); } /** * Sets the property $name to $value. * * @throws ezcBasePropertyNotFoundException * If the property $name does not exist * @param string $name * @param mixed $value * @ignore */ public function __set( $name, $value ) { switch ( $name ) { case 'message': case 'source': case 'category': case 'severity': $this->properties[$name] = $value; return; } throw new ezcBasePropertyNotFoundException( $name ); } /** * Returns the property $name. * * @throws ezcBasePropertyNotFoundException * If the property $name does not exist * @param string $name * @return mixed * @ignore */ public function __get( $name ) { switch ( $name ) { case 'message': case 'source': case 'category': case 'severity': return $this->properties[$name]; } throw new ezcBasePropertyNotFoundException( $name ); } /** * Returns true if the property $name is set, otherwise false. * * @param string $name * @return bool * @ignore */ public function __isset( $name ) { switch ( $name ) { case 'message': case 'source': case 'category': case 'severity': return isset( $this->properties[$name] ); default: return false; } } /** * Parses the message $message and sets the properties. * * See the general class documentation for message format. * The severity $severity is a E_USER_* PHP constant. The values will be translated accordingly: * - E_USER_NOTICE -> ezcLog::NOTICE * - E_USER_WARNING -> ezcLog::WARNING * - E_USER_ERROR -> ezcLog::ERROR * * @param string $message * @param int $severity * @param string $defaultSource * @param string $defaultCategory */ public function parseMessage( $message, $severity, $defaultSource, $defaultCategory ) { preg_match( "/^\s*(?:\[([^,\]]*)(?:,\s(.*))?\])?\s*(.*)$/", $message, $matches ); $this->message = ( strcmp( $matches[3], "" ) == 0 ? false : $matches[3] ); if ( strlen( $matches[2] ) == 0 ) { $this->category = ( strcmp( $matches[1], "" ) == 0 ? $defaultCategory : $matches[1] ); $this->source = $defaultSource; } else { $this->category = $matches[2]; $this->source = $matches[1]; } switch ( $severity ) { case E_USER_NOTICE: $this->severity = ezcLog::NOTICE; break; case E_USER_WARNING: $this->severity = ezcLog::WARNING; break; case E_USER_ERROR: $this->severity = ezcLog::ERROR; break; default: $this->severity = false; } } } ?>