library/log4php/appenders/LoggerAppenderEcho.php
changeset 46 f11c31f7fa3e
parent 45 a56e7f9a0463
child 47 03388ec805b4
equal deleted inserted replaced
45:a56e7f9a0463 46:f11c31f7fa3e
     1 <?php
       
     2 /**
       
     3  * Licensed to the Apache Software Foundation (ASF) under one or more
       
     4  * contributor license agreements. See the NOTICE file distributed with
       
     5  * this work for additional information regarding copyright ownership.
       
     6  * The ASF licenses this file to You under the Apache License, Version 2.0
       
     7  * (the "License"); you may not use this file except in compliance with
       
     8  * the License. You may obtain a copy of the License at
       
     9  *
       
    10  *       http://www.apache.org/licenses/LICENSE-2.0
       
    11  *
       
    12  * Unless required by applicable law or agreed to in writing, software
       
    13  * distributed under the License is distributed on an "AS IS" BASIS,
       
    14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
       
    15  * See the License for the specific language governing permissions and
       
    16  * limitations under the License.
       
    17  */
       
    18 
       
    19 /**
       
    20  * LoggerAppenderEcho uses the PHP echo() function to output events.
       
    21  *
       
    22  * This appender uses a layout.
       
    23  *
       
    24  * ## Configurable parameters: ##
       
    25  *
       
    26  * - **htmlLineBreaks** - If set to true, a <br /> element will be inserted
       
    27  *     before each line break in the logged message. Default is false.
       
    28  *
       
    29  * @version $Revision: 1337820 $
       
    30  * @package log4php
       
    31  * @subpackage appenders
       
    32  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
       
    33  * @link http://logging.apache.org/log4php/docs/appenders/echo.html Appender documentation
       
    34  */
       
    35 class LoggerAppenderEcho extends LoggerAppender {
       
    36     /**
       
    37      * Used to mark first append. Set to false after first append.
       
    38      * @var boolean
       
    39      */
       
    40     protected $firstAppend = true;
       
    41 
       
    42     /**
       
    43      * If set to true, a <br /> element will be inserted before each line
       
    44      * break in the logged message. Default value is false. @var boolean
       
    45      */
       
    46     protected $htmlLineBreaks = false;
       
    47 
       
    48     public function close() {
       
    49         if ($this->closed != true) {
       
    50             if (!$this->firstAppend) {
       
    51                 echo $this->layout->getFooter();
       
    52             }
       
    53         }
       
    54         $this->closed = true;
       
    55     }
       
    56 
       
    57     public function append(LoggerLoggingEvent $event) {
       
    58         if ($this->layout !== null) {
       
    59             if ($this->firstAppend) {
       
    60                 echo $this->layout->getHeader();
       
    61                 $this->firstAppend = false;
       
    62             }
       
    63             $text = $this->layout->format($event);
       
    64 
       
    65             if ($this->htmlLineBreaks) {
       
    66                 $text = nl2br($text);
       
    67             }
       
    68             echo $text;
       
    69         }
       
    70     }
       
    71 
       
    72     /**
       
    73      * Sets the 'htmlLineBreaks' parameter.
       
    74      * @param boolean $value
       
    75      */
       
    76     public function setHtmlLineBreaks($value) {
       
    77         $this->setBoolean('htmlLineBreaks', $value);
       
    78     }
       
    79 
       
    80     /**
       
    81      * Returns the 'htmlLineBreaks' parameter.
       
    82      * @returns boolean
       
    83      */
       
    84     public function getHtmlLineBreaks() {
       
    85         return $this->htmlLineBreaks;
       
    86     }
       
    87 }
       
    88