diff -r 5b37998e522e -r 162c1de6545a web/lib/Zend/Log/Formatter/Xml.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/Zend/Log/Formatter/Xml.php Fri Mar 11 15:05:35 2011 +0100 @@ -0,0 +1,121 @@ +_rootElement = $rootElement; + $this->_elementMap = $elementMap; + $this->setEncoding($encoding); + } + + /** + * Get encoding + * + * @return string + */ + public function getEncoding() + { + return $this->_encoding; + } + + /** + * Set encoding + * + * @param string $value + * @return Zend_Log_Formatter_Xml + */ + public function setEncoding($value) + { + $this->_encoding = (string) $value; + return $this; + } + + /** + * Formats data into a single line to be written by the writer. + * + * @param array $event event data + * @return string formatted line to write to the log + */ + public function format($event) + { + if ($this->_elementMap === null) { + $dataToInsert = $event; + } else { + $dataToInsert = array(); + foreach ($this->_elementMap as $elementName => $fieldKey) { + $dataToInsert[$elementName] = $event[$fieldKey]; + } + } + + $enc = $this->getEncoding(); + $dom = new DOMDocument('1.0', $enc); + $elt = $dom->appendChild(new DOMElement($this->_rootElement)); + + foreach ($dataToInsert as $key => $value) { + if($key == "message") { + $value = htmlspecialchars($value, ENT_COMPAT, $enc); + } + $elt->appendChild(new DOMElement($key, $value)); + } + + $xml = $dom->saveXML(); + $xml = preg_replace('/<\?xml version="1.0"( encoding="[^\"]*")?\?>\n/u', '', $xml); + + return $xml . PHP_EOL; + } + +}