ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
daemon.php
Go to the documentation of this file.
1<?php
18class Log_daemon extends Log
19{
24 var $_name = LOG_DAEMON;
25
31
37 var $_ip = '127.0.0.1';
38
44 var $_proto = 'udp';
45
50 var $_port = 514;
51
56 var $_maxsize = 4096;
57
62 var $_timeout = 1;
63
64
74 function Log_daemon($name, $ident = '', $conf = array(),
75 $level = PEAR_LOG_DEBUG)
76 {
77 /* Ensure we have a valid integer value for $name. */
78 if (empty($name) || !is_int($name)) {
79 $name = LOG_SYSLOG;
80 }
81
82 $this->_id = md5(microtime());
83 $this->_name = $name;
84 $this->_ident = $ident;
85 $this->_mask = Log::UPTO($level);
86
87 if (isset($conf['ip'])) {
88 $this->_ip = $conf['ip'];
89 }
90 if (isset($conf['proto'])) {
91 $this->_proto = $conf['proto'];
92 }
93 if (isset($conf['port'])) {
94 $this->_port = $conf['port'];
95 }
96 if (isset($conf['maxsize'])) {
97 $this->_maxsize = $conf['maxsize'];
98 }
99 if (isset($conf['timeout'])) {
100 $this->_timeout = $conf['timeout'];
101 }
102 $this->_proto = $this->_proto . '://';
103
104 register_shutdown_function(array(&$this, '_Log_daemon'));
105 }
106
112 function _Log_daemon()
113 {
114 $this->close();
115 }
116
122 function open()
123 {
124 if (!$this->_opened) {
125 $this->_opened = (bool)($this->_socket = @fsockopen(
126 $this->_proto . $this->_ip,
127 $this->_port,
128 $errno,
129 $errstr,
130 $this->_timeout));
131 }
132 return $this->_opened;
133 }
134
139 function close()
140 {
141 if ($this->_opened) {
142 $this->_opened = false;
143 return fclose($this->_socket);
144 }
145 return true;
146 }
147
160 function log($message, $priority = null)
161 {
162 /* If a priority hasn't been specified, use the default value. */
163 if ($priority === null) {
164 $priority = $this->_priority;
165 }
166
167 /* Abort early if the priority is above the maximum logging level. */
168 if (!$this->_isMasked($priority)) {
169 return false;
170 }
171
172 /* If the connection isn't open and can't be opened, return failure. */
173 if (!$this->_opened && !$this->open()) {
174 return false;
175 }
176
177 /* Extract the string representation of the message. */
178 $message = $this->_extractMessage($message);
179
180 /* Set the facility level. */
181 $facility_level = intval($this->_name) +
182 intval($this->_toSyslog($priority));
183
184 /* Prepend ident info. */
185 if (!empty($this->_ident)) {
186 $message = $this->_ident . ' ' . $message;
187 }
188
189 /* Check for message length. */
190 if (strlen($message) > $this->_maxsize) {
191 $message = substr($message, 0, ($this->_maxsize) - 10) . ' [...]';
192 }
193
194 /* Write to socket. */
195 fwrite($this->_socket, '<' . $facility_level . '>' . $message . "\n");
196
197 $this->_announce(array('priority' => $priority, 'message' => $message));
198 }
199
214 function _toSyslog($priority)
215 {
216 static $priorities = array(
217 PEAR_LOG_EMERG => LOG_EMERG,
218 PEAR_LOG_ALERT => LOG_ALERT,
219 PEAR_LOG_CRIT => LOG_CRIT,
220 PEAR_LOG_ERR => LOG_ERR,
221 PEAR_LOG_WARNING => LOG_WARNING,
222 PEAR_LOG_NOTICE => LOG_NOTICE,
223 PEAR_LOG_INFO => LOG_INFO,
224 PEAR_LOG_DEBUG => LOG_DEBUG
225 );
226
227 /* If we're passed an unknown priority, default to LOG_INFO. */
228 if (!is_int($priority) || !in_array($priority, $priorities)) {
229 return LOG_INFO;
230 }
231
232 return $priorities[$priority];
233 }
234
235}
const PEAR_LOG_ALERT
Definition: Log.php:11
const PEAR_LOG_EMERG
Definition: Log.php:10
const PEAR_LOG_ERR
Definition: Log.php:13
const PEAR_LOG_CRIT
Definition: Log.php:12
const PEAR_LOG_DEBUG
Definition: Log.php:17
const PEAR_LOG_INFO
Definition: Log.php:16
const PEAR_LOG_WARNING
Definition: Log.php:14
const PEAR_LOG_NOTICE
Definition: Log.php:15
_Log_daemon()
Destructor.
Definition: daemon.php:112
close()
Closes the connection to the system logger, if it is open.
Definition: daemon.php:139
Log_daemon($name, $ident='', $conf=array(), $level=PEAR_LOG_DEBUG)
Constructs a new syslog object.
Definition: daemon.php:74
log($message, $priority=null)
Sends $message to the currently open syslog connection.
Definition: daemon.php:160
open()
Opens a connection to the system logger, if it has not already been opened.
Definition: daemon.php:122
_toSyslog($priority)
Converts a PEAR_LOG_* constant into a syslog LOG_* constant.
Definition: daemon.php:214
UPTO($priority)
Calculate the log mask for all priorities up to the given priority.
Definition: Log.php:642
$_priority
Definition: Log.php:69
_isMasked($priority)
Check if the given priority is included in the current level mask.
Definition: Log.php:726
$_opened
Definition: Log.php:45
_announce($event)
Informs each registered observer instance that a new message has been logged.
Definition: Log.php:811
_extractMessage($message)
Returns the string representation of the message data.
Definition: Log.php:417
The Log:: class implements both an abstraction for various logging mechanisms and the Subject end of ...