Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<?php
2
/**
3
 * $Header$
4
 *
5
 * @version $Revision: 293927 $
6
 * @package Log
7
 */
8
 
9
/**
10
 * The Log_error_log class is a concrete implementation of the Log abstract
11
 * class that logs messages using PHP's error_log() function.
12
 *
13
 * @author  Jon Parise <jon@php.net>
14
 * @since   Log 1.7.0
15
 * @package Log
16
 *
17
 * @example error_log.php   Using the error_log handler.
18
 */
19
class Log_error_log extends Log
20
{
21
    /**
22
     * The error_log() log type.
23
     * @var integer
24
     * @access private
25
     */
26
    var $_type = PEAR_LOG_TYPE_SYSTEM;
27
 
28
    /**
29
     * The type-specific destination value.
30
     * @var string
31
     * @access private
32
     */
33
    var $_destination = '';
34
 
35
    /**
36
     * Additional headers to pass to the mail() function when the
37
     * PEAR_LOG_TYPE_MAIL type is used.
38
     * @var string
39
     * @access private
40
     */
41
    var $_extra_headers = '';
42
 
43
    /**
44
     * String containing the format of a log line.
45
     * @var string
46
     * @access private
47
     */
48
    var $_lineFormat = '%2$s: %4$s';
49
 
50
    /**
51
     * String containing the timestamp format.  It will be passed directly to
52
     * strftime().  Note that the timestamp string will generated using the
53
     * current locale.
54
     * @var string
55
     * @access private
56
     */
57
    var $_timeFormat = '%b %d %H:%M:%S';
58
 
59
    /**
60
     * Constructs a new Log_error_log object.
61
     *
62
     * @param string $name     One of the PEAR_LOG_TYPE_* constants.
63
     * @param string $ident    The identity string.
64
     * @param array  $conf     The configuration array.
65
     * @param int    $level    Log messages up to and including this level.
66
     * @access public
67
     */
68
    function Log_error_log($name, $ident = '', $conf = array(),
69
                           $level = PEAR_LOG_DEBUG)
70
    {
71
        $this->_id = md5(microtime());
72
        $this->_type = $name;
73
        $this->_ident = $ident;
74
        $this->_mask = Log::UPTO($level);
75
 
76
        if (!empty($conf['destination'])) {
77
            $this->_destination = $conf['destination'];
78
        }
79
 
80
        if (!empty($conf['extra_headers'])) {
81
            $this->_extra_headers = $conf['extra_headers'];
82
        }
83
 
84
        if (!empty($conf['lineFormat'])) {
85
            $this->_lineFormat = str_replace(array_keys($this->_formatMap),
86
                                             array_values($this->_formatMap),
87
                                             $conf['lineFormat']);
88
        }
89
 
90
        if (!empty($conf['timeFormat'])) {
91
            $this->_timeFormat = $conf['timeFormat'];
92
        }
93
    }
94
 
95
    /**
96
     * Opens the handler.
97
     *
98
     * @access  public
99
     * @since   Log 1.9.6
100
     */
101
    function open()
102
    {
103
        $this->_opened = true;
104
        return true;
105
    }
106
 
107
    /**
108
     * Closes the handler.
109
     *
110
     * @access  public
111
     * @since   Log 1.9.6
112
     */
113
    function close()
114
    {
115
        $this->_opened = false;
116
        return true;
117
    }
118
 
119
    /**
120
     * Logs $message using PHP's error_log() function.  The message is also
121
     * passed along to any Log_observer instances that are observing this Log.
122
     *
123
     * @param mixed  $message   String or object containing the message to log.
124
     * @param string $priority The priority of the message.  Valid
125
     *                  values are: PEAR_LOG_EMERG, PEAR_LOG_ALERT,
126
     *                  PEAR_LOG_CRIT, PEAR_LOG_ERR, PEAR_LOG_WARNING,
127
     *                  PEAR_LOG_NOTICE, PEAR_LOG_INFO, and PEAR_LOG_DEBUG.
128
     * @return boolean  True on success or false on failure.
129
     * @access public
130
     */
131
    function log($message, $priority = null)
132
    {
133
        /* If a priority hasn't been specified, use the default value. */
134
        if ($priority === null) {
135
            $priority = $this->_priority;
136
        }
137
 
138
        /* Abort early if the priority is above the maximum logging level. */
139
        if (!$this->_isMasked($priority)) {
140
            return false;
141
        }
142
 
143
        /* Extract the string representation of the message. */
144
        $message = $this->_extractMessage($message);
145
 
146
        /* Build the string containing the complete log line. */
147
        $line = $this->_format($this->_lineFormat,
148
                               strftime($this->_timeFormat),
149
                               $priority, $message);
150
 
151
        /* Pass the log line and parameters to the error_log() function. */
152
        $success = error_log($line, $this->_type, $this->_destination,
153
                             $this->_extra_headers);
154
 
155
        $this->_announce(array('priority' => $priority, 'message' => $message));
156
 
157
        return $success;
158
    }
159
 
160
}