loggerxmllayout.php.svn-base

来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 209 行

SVN-BASE
209
字号
<?php/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.  See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License.  You may obtain a copy of the License at * *     http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * @package log4php * @subpackage layouts *//** * @ignore  */if (!defined('LOG4PHP_DIR')) define('LOG4PHP_DIR', dirname(__FILE__) . '/..');define('LOG4PHP_LOGGER_XML_LAYOUT_LOG4J_NS_PREFIX',     'log4j');define('LOG4PHP_LOGGER_XML_LAYOUT_LOG4J_NS',            'http://jakarta.apache.org/log4j/');define('LOG4PHP_LOGGER_XML_LAYOUT_LOG4PHP_NS_PREFIX',   'log4php');define('LOG4PHP_LOGGER_XML_LAYOUT_LOG4PHP_NS',          'http://logging.apache.org/log4php/');/** */require_once(LOG4PHP_DIR . '/helpers/LoggerOptionConverter.php');require_once(LOG4PHP_DIR . '/helpers/LoggerTransform.php');require_once(LOG4PHP_DIR . '/LoggerLayout.php');/** * The output of the LoggerXmlLayout consists of a series of log4php:event elements.  *  * <p>Parameters: {@link $locationInfo}.</p> * * <p>It does not output a complete well-formed XML file.  * The output is designed to be included as an external entity in a separate file to form * a correct XML file.</p> * * @author  Marco Vassura * @version $Revision: 635069 $ * @package log4php * @subpackage layouts */class LoggerXmlLayout extends LoggerLayout {    /**     * The <b>LocationInfo</b> option takes a boolean value. By default,     * it is set to false which means there will be no location     * information output by this layout. If the the option is set to     * true, then the file name and line number of the statement at the     * origin of the log statement will be output.     * @var boolean     */    var $locationInfo = true;      /**     * @var boolean set the elements namespace     */    var $log4jNamespace = false;            /**     * @var string namespace     * @private     */    var $_namespace = LOG4PHP_LOGGER_XML_LAYOUT_LOG4PHP_NS;        /**     * @var string namespace prefix     * @private     */    var $_namespacePrefix = LOG4PHP_LOGGER_XML_LAYOUT_LOG4PHP_NS_PREFIX;         /**      * No options to activate.      */    function activateOptions()    {        if ($this->getLog4jNamespace()) {            $this->_namespace        = LOG4PHP_LOGGER_XML_LAYOUT_LOG4J_NS;            $this->_namespacePrefix  = LOG4PHP_LOGGER_XML_LAYOUT_LOG4J_NS_PREFIX;        } else {            $this->_namespace        = LOG4PHP_LOGGER_XML_LAYOUT_LOG4PHP_NS;            $this->_namespacePrefix  = LOG4PHP_LOGGER_XML_LAYOUT_LOG4PHP_NS_PREFIX;        }         }        /**     * @return string     */    function getHeader()    {        return "<{$this->_namespacePrefix}:eventSet ".                    "xmlns:{$this->_namespacePrefix}=\"{$this->_namespace}\" ".                    "version=\"0.3\" ".                    "includesLocationInfo=\"".($this->getLocationInfo() ? "true" : "false")."\"".               ">\r\n";    }    /**     * Formats a {@link LoggerLoggingEvent} in conformance with the log4php.dtd.     *     * @param LoggerLoggingEvent $event     * @return string     */    function format($event)    {        $loggerName = $event->getLoggerName();        $timeStamp  = number_format((float)($event->getTimeStamp() * 1000), 0, '', '');        $thread     = $event->getThreadName();        $level      = $event->getLevel();        $levelStr   = $level->toString();        $buf = "<{$this->_namespacePrefix}:event logger=\"{$loggerName}\" level=\"{$levelStr}\" thread=\"{$thread}\" timestamp=\"{$timeStamp}\">\r\n";        $buf .= "<{$this->_namespacePrefix}:message><![CDATA[";         LoggerTransform::appendEscapingCDATA($buf, $event->getRenderedMessage());         $buf .= "]]></{$this->_namespacePrefix}:message>\r\n";                $ndc = $event->getNDC();        if($ndc != null) {            $buf .= "<{$this->_namespacePrefix}:NDC><![CDATA[";            LoggerTransform::appendEscapingCDATA($buf, $ndc);            $buf .= "]]></{$this->_namespacePrefix}:NDC>\r\n";               }        if ($this->getLocationInfo()) {            $locationInfo = $event->getLocationInformation();            $buf .= "<{$this->_namespacePrefix}:locationInfo ".                     "class=\"" . $locationInfo->getClassName() . "\" ".                    "file=\"" .  htmlentities($locationInfo->getFileName(), ENT_QUOTES) . "\" ".                    "line=\"" .  $locationInfo->getLineNumber() . "\" ".                    "method=\"" . $locationInfo->getMethodName() . "\" ";            $buf .= "/>\r\n";        }        $buf .= "</{$this->_namespacePrefix}:event>\r\n\r\n";                return $buf;    }        /**     * @return string     */    function getFooter()    {        return "</{$this->_namespacePrefix}:eventSet>\r\n";    }        /**     * @return boolean     */    function getLocationInfo()    {        return $this->locationInfo;    }      /**     * @return boolean     */    function getLog4jNamespace()    {        return $this->log4jNamespace;    }    /**     * The XMLLayout prints and does not ignore exceptions. Hence the     * return value <b>false</b>.     * @return boolean     */    function ignoresThrowable()    {        return false;    }        /**     * The {@link $locationInfo} option takes a boolean value. By default,     * it is set to false which means there will be no location     * information output by this layout. If the the option is set to     * true, then the file name and line number of the statement at the     * origin of the log statement will be output.     */    function setLocationInfo($flag)    {        $this->locationInfo = LoggerOptionConverter::toBoolean($flag, true);    }      /**     * @param boolean     */    function setLog4jNamespace($flag)    {        $this->log4jNamespace = LoggerOptionConverter::toBoolean($flag, true);    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?