置頂 寫個日誌封裝器 感覺用起來很爽

2021-07-22 17:48:57 字數 3485 閱讀 1992

寫個日誌封裝器....

<?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程式,日誌資訊可以有幾個輸出渠道,乙個是檔案日...