| Code Coverage
| Classes and Traits | Functions and Methods | Lines
Total |  | 0.00% | 0 / 1 |  | 33.33% | 3 / 9 | CRAP |  | 53.33% | 16 / 30
LoggerAppenderSocket |  | 0.00% | 0 / 1 |  | 33.33% | 3 / 9 | 30.18 |  | 53.33% | 16 / 30
getDefaultLayout() |  | 100.00% | 1 / 1 | 1 |  | 100.00% | 1 / 1
activateOptions() |  | 0.00% | 0 / 1 | 3.33 |  | 66.67% | 6 / 9
append(LoggerLoggingEvent $event) |  | 0.00% | 0 / 1 | 4.46 |  | 45.45% | 5 / 11
setRemoteHost($hostname) |  | 100.00% | 1 / 1 | 1 |  | 100.00% | 2 / 2
setPort($port) |  | 100.00% | 1 / 1 | 1 |  | 100.00% | 2 / 2
setTimeout($timeout) |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 2
getRemoteHost() |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 1
getPort() |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 1
getTimeout() |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 1

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 | }