寫個日誌封裝器....
<?php
/** * 日誌系統抽象類
* */
abstract class logwriterabstract
/** * logfirephpwriter 類提供對 firephp 的支援
*/class logfirephpwriter extends logwriterabstract
if ($this->_enabled)
$this->_kernel->fb($msg, $title, firephp::info);
}}/**
* logfile 類提供基本的檔案日誌服務
*/class logfilewriter extends logwriterabstract
$dir = realpath($dir);
if (substr($dir, -1) != ds)
if (!is_dir($dir) || !is_writable($dir)) else
global $___sfw_loaded_time;
$sec = (int) $___sfw_loaded_time;
$usec = $___sfw_loaded_time - $sec;
$this->_starttag = sprintf("[%s %s] *****== sfw loaded *****==\n",
date($this->dateformat, $sec), $usec);
if (isset($_server['request_uri']))
// 註冊指令碼結束時要執行的方法,將快取的日誌內容寫入檔案
shutdowncallback::getinstance()->add(array($this, '__writelog'));
// 檢查檔案是否已經超過指定大小
if (file_exists($this->_logfilename)) else
if ($maxsize >= 512) }}
}/**
* 追加日誌資訊
** @param string $msg
* @param string $title
* @param string $level*/}
/*** 將快取的日誌資訊寫入實際儲存,並清空快取
* 此方法由系統自動呼叫
* */
function __writelog()
flock($fp, lock_ex);
fwrite($fp, str_replace("\r", '', $content));
flock($fp, lock_un);
fclose($fp);
}}
<?php
/** * 應用程式基本啟動檔案,提**用程式執行的關鍵設定資訊
*/$root_dir = dirname(dirname(dirname(__file__)));
/** * 如果要整合第三方的 php 庫,錯誤報告也許要修改為:
* * error_reporting(e_all & ~(e_strict | e_notice));
*/error_reporting(e_all | e_strict);
$config = array(
/*** 應用程式的 id,用於唯一標識乙個應用程式
*//**
* 應用程式根目錄
*/'root_dir' => $root_dir,
/*** 主程式所在目錄
*//**
* 輔助庫目錄
*/'library_dir' => "/_code/lib",
/*** 配置檔案所在目錄
*/'config_dir' => "/_code/config",
/*** 臨時(快取)檔案所在目錄
*/'tmp_dir' => "/_code/tmp",
/*** 日誌檔案所在目錄
*/'log_dir' => "/_code/log",
/*** 所有擴充套件模組所在的目錄
*/ );
// 設定類檔案基本路徑
//set_include_path('.' . path_separator . $config['library_dir'] . path_separator . get_include_path());
// 載入不同命名空間下的配置檔案 .sys.php,.route.php
$configfornamepace = array(
/*** 國際化和本地化
*/ '_i18n_multi_languages' => false,// 指示是否啟用多語言支援
'_l10n_default_timezone' => 'asia/shanghai',// 預設的時區設定
/*** 日誌設定
*/'_log_enabled' => true ,
'_log_writer' => 'logfilewriter' , //logfirephpwriter
'_log_filename' => "-access.log" ,
'_log_file_maxsize' => 512 ,
'_log_levels' => 'notice, debug, warning, error, exception, info' ,
/*** 資料庫鏈結dsn設定
*/ '_db_default_dsn' => array(
'driver' => 'mysqlt',
'host' => 'localhost',
'login' => 'root',
'password' => 'root',
'database' => 'smallcms',
'charset' => 'utf8',
), ); /**
* 初始化應用程式
*/// 設定預設的時區
// 設定應用的日誌記錄服務
require_once("/log.php");
// 設定應用的快取服務
// 載入資料庫操作元件
require_once("/db.php");
// 設定分發器物件,並進行請求分發
require_once("/web.php");
$wd = webdispatcher::getinstance();
$wd->setnamespace($namespace);
// 設定過濾器
//$wd->addbeforefilter(new requestauthfilter());
$response = $wd->dispatching();
if ($response) echo $response;
寫個日誌封裝器 感覺用起來很爽
寫個日誌封裝器.日誌系統抽象類 abstract class logwriterabstract logfirephpwriter 類提供對 firephp 的支援 class logfirephpwriter extends logwriterabstract if this enabled th...
視窗置頂器 TopWindow
n年前寫的陳年老物。但是卻很有用 最近改進下,不用全域性鉤子了,用全域性熱鍵。對管理員許可權建立的程式視窗,本程式也需要管理員許可權才能對其操作 ctrl f2 置頂當前啟用視窗 ctrl f3 取消置頂當前啟用視窗 結束程式請用任務管理器強制結束 天翼雲貌似分享功能炸了,按了沒反應 果然還是 gi...
程式日誌封裝總結
owed by 春夜喜雨 最近又寫了乙個c 的應用程式,開發使用的過程中,希望知道工具的執行細節,也希望能及時把出錯資訊記錄下來。期望一方面 及時反饋出錯誤,另一方面 供後續遇到問題時的分析使用。借本次總結,把思路再理一遍,供後續參考。寫的windows程式,日誌資訊可以有幾個輸出渠道,乙個是檔案日...