Overview

Packages

  • log4php
    • appenders
    • configurators
    • filters
    • helpers
    • layouts
    • pattern
    • renderers

Classes

  • LoggerAppenderConsole
  • LoggerAppenderDailyFile
  • LoggerAppenderEcho
  • LoggerAppenderFile
  • LoggerAppenderFirePHP
  • LoggerAppenderMail
  • LoggerAppenderMailEvent
  • LoggerAppenderMongoDB
  • LoggerAppenderNull
  • LoggerAppenderPDO
  • LoggerAppenderPhp
  • LoggerAppenderRollingFile
  • LoggerAppenderSocket
  • LoggerAppenderSyslog
  • Overview
  • Package
  • Class
  • Tree
  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:  * LoggerAppenderSocket appends to a network socket.
 21:  *
 22:  * ## Configurable parameters: ##
 23:  * 
 24:  * - **remoteHost** - Target remote host.
 25:  * - **port** - Target port (optional, defaults to 4446).
 26:  * - **timeout** - Connection timeout in seconds (optional, defaults to 
 27:  *     'default_socket_timeout' from php.ini)
 28:  * 
 29:  * The socket will by default be opened in blocking mode.
 30:  * 
 31:  * @version $Revision: 1337820 $
 32:  * @package log4php
 33:  * @subpackage appenders
 34:  * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
 35:  * @link http://logging.apache.org/log4php/docs/appenders/socket.html Appender documentation
 36:  */ 
 37: class LoggerAppenderSocket extends LoggerAppender {
 38:     
 39:     /** 
 40:      * Target host.
 41:      * @see http://php.net/manual/en/function.fsockopen.php 
 42:      */
 43:     protected $remoteHost;
 44:     
 45:     /** Target port */
 46:     protected $port = 4446;
 47:     
 48:     /** Connection timeout in ms. */
 49:     protected $timeout;
 50:     
 51:     // ******************************************
 52:     // *** Appender methods                   ***
 53:     // ******************************************
 54:     
 55:     /** Override the default layout to use serialized. */
 56:     public function getDefaultLayout() {
 57:         return new LoggerLayoutSerialized();
 58:     }
 59:     
 60:     public function activateOptions() {
 61:         if (empty($this->remoteHost)) {
 62:             $this->warn("Required parameter [remoteHost] not set. Closing appender.");
 63:             $this->closed = true;
 64:             return;
 65:         }
 66:     
 67:         if (empty($this->timeout)) {
 68:             $this->timeout = ini_get("default_socket_timeout");
 69:         }
 70:     
 71:         $this->closed = false;
 72:     }
 73:     
 74:     public function append(LoggerLoggingEvent $event) {
 75:         $socket = fsockopen($this->remoteHost, $this->port, $errno, $errstr, $this->timeout);
 76:         if ($socket === false) {
 77:             $this->warn("Could not open socket to {$this->remoteHost}:{$this->port}. Closing appender.");
 78:             $this->closed = true;
 79:             return;
 80:         }
 81:     
 82:         if (false === fwrite($socket, $this->layout->format($event))) {
 83:             $this->warn("Error writing to socket. Closing appender.");
 84:             $this->closed = true;
 85:         }
 86:         fclose($socket);
 87:     }
 88:     
 89:     // ******************************************
 90:     // *** Accessor methods                   ***
 91:     // ******************************************
 92:     
 93:     /** Sets the target host. */
 94:     public function setRemoteHost($hostname) {
 95:         $this->setString('remoteHost', $hostname);
 96:     }
 97:     
 98:     /** Sets the target port */
 99:     public function setPort($port) {
100:         $this->setPositiveInteger('port', $port);
101:     }
102:      
103:     /** Sets the timeout. */
104:     public function setTimeout($timeout) {
105:         $this->setPositiveInteger('timeout', $timeout);
106:     }
107:     
108:     /** Returns the target host. */
109:     public function getRemoteHost() {
110:         return $this->getRemoteHost();
111:     }
112:     
113:     /** Returns the target port. */
114:     public function getPort() {
115:         return $this->port;
116:     }
117:     
118:     /** Returns the timeout */
119:     public function getTimeout() {
120:         return $this->timeout;
121:     }
122: }
123: 
Apache log4php API documentation generated by ApiGen 2.8.0