root/websites/planet.php.gr.jp/trunk/lib/Ethna/class/Ethna_LogWriter.php @ 12921

Revision 12921, 4.2 kB (checked in by ha1t, 7 years ago)

first import

Line 
1<?php
2// vim: foldmethod=marker
3/**
4 *    Ethna_LogWriter.php
5 *
6 *    @author        Masaki Fujimoto <fujimoto@php.net>
7 *    @license    http://www.opensource.org/licenses/bsd-license.php The BSD License
8 *    @package    Ethna
9 *    @version    $Id: Ethna_LogWriter.php 49 2006-06-20 09:44:20Z ha1t $
10 */
11
12// {{{ Ethna_LogWriter
13/**
14 *    ���ϴ���饹
15 *
16 *    @author        Masaki Fujimoto <fujimoto@php.net>
17 *    @access        public
18 *    @package    Ethna
19 */
20class Ethna_LogWriter
21{
22    /**#@+
23     *    @access    private
24     */
25
26    /**    @var    string    ������ǥ���ƥ�ʸ��/
27    var    $ident;
28
29    /**    @var    int        ��ե������� */
30    var    $facility;
31
32    /**    @var    int        ����ץ��� */
33    var    $option;
34
35    /**    @var    string    ��ե�����/
36    var    $file;
37
38    /**    @var    bool    �Хå��ȥ졼������������ɤ��� */
39    var    $have_backtrace;
40
41    /**    @var    array    ������ơ��֥�/
42    var    $level_name_table = array(
43        LOG_EMERG    => 'EMERG',
44        LOG_ALERT    => 'ALERT',
45        LOG_CRIT    => 'CRIT',
46        LOG_ERR        => 'ERR',
47        LOG_WARNING    => 'WARNING',
48        LOG_NOTICE    => 'NOTICE',
49        LOG_INFO    => 'INFO',
50        LOG_DEBUG    => 'DEBUG',
51    );
52
53    /**#@-*/
54
55    /**
56     *    Ethna_LogWriter���饹�Υ��󥹥ȥ饯��
57     *
58     *    @access    public
59     *    @param    string    $log_ident        ������ǥ���ƥ�ʸ��ץ��̾�)
60     *    @param    int        $log_facility    ��ե�������
61     *    @param    string    $log_file        �����������(LOG_FILE���ץ�������ꤵ����������
62     *    @param    int        $log_option        ����ץ���(LOG_FILE,LOG_FUNCTION...)
63     */
64    function Ethna_LogWriter($log_ident, $log_facility, $log_file, $log_option)
65    {
66        $this->ident = $log_ident;
67        $this->facility = $log_facility;
68        $this->option = $log_option;
69        $this->file = $log_file;
70        $this->have_backtrace = function_exists('debug_backtrace');
71    }
72
73    /**
74     *    ���Ϥ򳫻Ϥ��� *
75     *    @access    public
76     */
77    function begin()
78    {
79    }
80
81    /**
82     *    ���Ϥ��� *
83     *    @access    public
84     *    @param    int        $level        �����OG_DEBUG, LOG_NOTICE...)
85     *    @param    string    $message    ���������(+��     */
86    function log($level, $message)
87    {
88    }
89
90    /**
91     *    ���Ϥ������ *
92     *    @access    public
93     */
94    function end()
95    {
96    }
97
98    /**
99     *    ������ǥ���ƥ�ʸ�������� *
100     *    @access    public
101     *    @return    string    ������ǥ���ƥ�ʸ�� */
102    function getIdent()
103    {
104        return $this->ident;
105    }
106
107    /**
108     *    �����ɽ��ʸ��������� *
109     *    @access    private
110     *    @param    int        $level    �����OG_DEBUG,LOG_NOTICE...)
111     *    @return    string    �������ʸ��OG_DEBUG��"DEBUG")
112     */
113    function _getLogLevelName($level)
114    {
115        if (isset($this->level_name_table[$level]) == false) {
116            return null;
117        }
118        return $this->level_name_table[$level];
119    }
120
121    /**
122     *    ���ϲս����ؿ��ե������)������ *
123     *    @access    private
124     *    @return    array    ���ϲս���     */
125    function _getBacktrace()
126    {
127        $skip_method_list = array(
128            array('ethna', 'raise.*'),
129            array(null, 'raiseerror'),
130            array(null, 'handleerror'),
131            array('ethna_logger', null),
132            array('ethna_logwriter*', null),
133            array('ethna_error', null),
134            array('ethna_apperror', null),
135            array('ethna_actionerror', null),
136            array('ethna_backend', 'log'),
137            array(null, 'ethna_error_handler'),
138            array(null, 'trigger_error'),
139        );
140
141        if ($this->have_backtrace == false) {
142            return null;
143        }
144
145        $bt = debug_backtrace();
146        $i = 0;
147        while ($i < count($bt)) {
148            if (isset($bt[$i]['class']) == false) {
149                $bt[$i]['class'] = null;
150            }
151            $skip = false;
152
153            // �᥽�åɥ����å׽�
154            foreach ($skip_method_list as $method) {
155                $class = $function = true;
156                if ($method[0] != null) {
157                    $class = preg_match("/$method[0]/i", $bt[$i]['class']);
158                }
159                if ($method[1] != null) {
160                    $function = preg_match("/$method[1]/i", $bt[$i]['function']);
161                }
162                if ($class && $function) {
163                    $skip = true;
164                    break;
165                }
166            }
167
168            if ($skip) {
169                $i++;
170            } else {
171                break;
172            }
173        }
174
175        $c =& Ethna_Controller::getInstance();
176        $basedir = $c->getBasedir();
177
178        $function = sprintf("%s.%s", isset($bt[$i]['class']) ? $bt[$i]['class'] : 'global', $bt[$i]['function']);
179
180        $file = $bt[$i]['file'];
181        if (strncmp($file, $basedir, strlen($basedir)) == 0) {
182            $file = substr($file, strlen($basedir));
183        }
184        if (strncmp($file, ETHNA_BASE, strlen(ETHNA_BASE)) == 0) {
185            $file = preg_replace('#^/+#', '', substr($file, strlen(ETHNA_BASE)));
186        }
187        $line = $bt[$i]['line'];
188        return array('function' => $function, 'pos' => sprintf('%s:%s', $file, $line));
189    }
190}
191// }}}
192?>
Note: See TracBrowser for help on using the browser.