library/log4php/appenders/LoggerAppenderConsole.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  * LoggerAppenderConsole appends log events either to the standard output
       
    21  * stream (php://stdout) or the standard error stream (php://stderr).
       
    22  *
       
    23  * **Note**: Use this Appender with command-line php scripts. On web scripts
       
    24  * this appender has no effects.
       
    25  *
       
    26  * This appender uses a layout.
       
    27  *
       
    28  * ## Configurable parameters: ##
       
    29  *
       
    30  * - **target** - the target stream: "stdout" or "stderr"
       
    31  *
       
    32  * @version $Revision: 1343601 $
       
    33  * @package log4php
       
    34  * @subpackage appenders
       
    35  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
       
    36  * @link http://logging.apache.org/log4php/docs/appenders/console.html Appender documentation
       
    37  */
       
    38 class LoggerAppenderConsole extends LoggerAppender {
       
    39 
       
    40     /** The standard otuput stream.  */
       
    41     const STDOUT = 'php://stdout';
       
    42 
       
    43     /** The standard error stream.*/
       
    44     const STDERR = 'php://stderr';
       
    45 
       
    46     /** The 'target' parameter. */
       
    47     protected $target = self::STDOUT;
       
    48 
       
    49     /**
       
    50      * Stream resource for the target stream.
       
    51      * @var resource
       
    52      */
       
    53     protected $fp = null;
       
    54 
       
    55     public function activateOptions() {
       
    56         $this->fp = fopen($this->target, 'w');
       
    57         if (is_resource($this->fp) && $this->layout !== null) {
       
    58             fwrite($this->fp, $this->layout->getHeader());
       
    59         }
       
    60         $this->closed = (bool)is_resource($this->fp) === false;
       
    61     }
       
    62 
       
    63 
       
    64     public function close() {
       
    65         if ($this->closed != true) {
       
    66             if (is_resource($this->fp) && $this->layout !== null) {
       
    67                 fwrite($this->fp, $this->layout->getFooter());
       
    68                 fclose($this->fp);
       
    69             }
       
    70             $this->closed = true;
       
    71         }
       
    72     }
       
    73 
       
    74     public function append(LoggerLoggingEvent $event) {
       
    75         if (is_resource($this->fp) && $this->layout !== null) {
       
    76             fwrite($this->fp, $this->layout->format($event));
       
    77         }
       
    78     }
       
    79 
       
    80     /**
       
    81      * Sets the 'target' parameter.
       
    82      * @param string $target
       
    83      */
       
    84     public function setTarget($target) {
       
    85         $value = trim($target);
       
    86         if ($value == self::STDOUT || strtoupper($value) == 'STDOUT') {
       
    87             $this->target = self::STDOUT;
       
    88         } elseif ($value == self::STDERR || strtoupper($value) == 'STDERR') {
       
    89             $this->target = self::STDERR;
       
    90         } else {
       
    91             $target = var_export($target);
       
    92             $this->warn("Invalid value given for 'target' property: [$target]. Property not set.");
       
    93         }
       
    94     }
       
    95 
       
    96     /**
       
    97      * Returns the value of the 'target' parameter.
       
    98      * @return string
       
    99      */
       
   100     public function getTarget() {
       
   101         return $this->target;
       
   102     }
       
   103 }