php單例模式實現日誌處理類庫

2021-06-20 10:35:11 字數 1861 閱讀 7955

該日誌類利用單例模式,節省資源。自行判斷檔案大小,超出指定大小則按序自行建立檔案。

對於現在的應用程式來說,日誌的重要性是不言而喻的。很難想象沒有任何日誌記錄功能的應用程式執行在生產環境中。日誌所能提供的功能是多種多樣的,包括記錄程式執行時產生的錯誤資訊、狀態資訊、除錯資訊和執行時間資訊等。在生產環境中,日誌是查詢問題**的重要依據。應用程式執行時的產生的各種資訊,都應該通過日誌類庫來進行記錄。

**: /**

* 日誌處理類

* * @since alpha 0.0.1

* @date 2014.03.04

* @author genialx

* */

class log

/*** 單利模式

* * @since alpha 0.0.1

* @date 2014.02.04

* @author genialx

*/public static function get_instance()

return self::$instance;

}/**

* * 日誌記錄

* * @param int $type  0 -> 記錄(thing log) / 1 -> 錯誤(error log)

* @param string $desc

* @param string $time

* * @since alpha 0.0.1

* @date 2014.02.04

* @author genialx

* */

public function log($type,$desc,$time)

switch($type)}}

/*** 獲取當前日誌的最新文件的字尾

* * @since alpha 0.0.1

* @date 2014.02.04

* @author genialx

*/private function get_max_log_file_suf()}}

} // www.jbxue.com

if($log_file_suf == null)

//截斷檔案

if( file_exists($this->log_file_path . $this->log_file_pre . $log_file_suf) && filesize($this->log_file_path . $this->log_file_pre . $log_file_suf) >= $this->log_max_len)

return $log_file_suf;

}   

}return 0;

}/**

* 關閉檔案控制代碼

* * @since alpha 0.0.1

* @date 2014.02.04

* @author genialx

*/public function close()

}功能說明:

該日誌類利用單例模式,節省資源。自行判斷檔案大小,超出指定大小則按序自行建立檔案。如:檔案log_0大於指定大小,則重新建立log_1檔案(注意:建立檔案是安裝檔名字尾的數字的,請勿隨意更改日誌檔名)。

有待優化:沒有指定檔案的最大個數,所以定期要手動刪除過多的日誌檔案。

呼叫示例:

//log

$l = log::get_instance();

//第乙個引數 int 0代表事件記錄(thing log:),1代表錯誤記錄(error log:)

//第二個引數 string 描述文字

//第三個引數 string 時間

$l->log(1,'日誌描述', date('y-n-j h:m:s'));

$l->close();

PHP實現單例模式

一.單例模式的特點 應用場景 在乙個應用中會存在大量連線資料庫的操作,如果不用單例模式,那每次都要new操作,但是每次new都會消耗大量的記憶體資源和系統資源,而且每次開啟和關閉資料庫連線都是對資料庫的一種極大考驗和浪費。二 要點 1.construct和 clone這兩個方法必須設為私有,防止外部...

php實現單例模式

概要 建立型模式 保證乙個類僅有乙個例項,並且提供乙個訪問它的全域性訪問點 gof95 特點 1 乙個類只有乙個例項 2 它必須自行建立這個例項 3 必須自行向整個系統提供這個例項 結構圖 主要角色 singleton 定義乙個instance操作,允許客戶訪問它的唯一例項。instance是乙個類...

php 單例模式 多頁面,PHP單例模式的實現

單例模式的意義在於,很多時候不需要建立重複的例項。用php實現單例模式的原理是,使用乙個靜態變數儲存例項,當遇到重複的 new 操作時,直接返回靜態變數中儲存的例項。典型的應用有資料庫類,請看 class db 儲存例項的靜態變數 public static instance 構造方法私有化 不能直...