root/websites/planet.php.gr.jp/trunk/lib/Ethna/class/Ethna_LogWriter.php
@
12921
| Revision 12921, 4.2 kB (checked in by ha1t, 5 years ago) |
|---|
| 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 | Â */ |
| 20 | class 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.
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)