本文制定了日誌類庫的通用介面規範。
本規範的主要目的,是為了讓日誌類庫以簡單通用的方式,通過接收乙個psr\log\loggerinte***ce
物件,來記錄日誌資訊。 框架以及cms內容管理系統如有需要,可以對此介面進行擴充套件,但需遵循本規範, 這才能保證在使用第三方的類庫檔案時,日誌介面仍能正常對接。
本文中的 實現者 指的是實現了loggerinte***ce
介面的類庫或者框架,反過來講,他們就是loggerinte***ce
的 使用者。
loggerinte***ce
介面對外定義了八個方法,分別用來記錄 rfc 5424 中定義的八個等級的日誌:debug、 info、 notice、 warning、 error、 critical、 alert 以及 emergency 。
第九個方法 —— log,其第乙個引數為記錄的等級。可使用乙個預先定義的等級常量作為引數來呼叫此方法,必須與直接呼叫以上八個方法具有相同的效果。如果傳入的等級常量引數沒有預先定義,則必須丟擲psr\log\invalidargumentexception
型別的異常。在不確定的情況下,使用者不該使用未支援的等級常量來呼叫此方法。
以上每個方法都接受乙個字串型別或者是有__tostring()
方法的物件作為記錄資訊引數,這樣,實現者就能把它當成字串來處理,否則實現者必須自己把它轉換成字串。
記錄資訊引數可以攜帶佔位符,實現者可以根據上下文將其它替換成相應的值。
其中佔位符必須與上下文陣列中的鍵名保持一致。
佔位符的名稱必須由乙個左花括號包含。但花括號與名稱之間一定不能有空格符。
佔位符的名稱應該只由 a-z、 a-z,0-9、下劃線 _、以及英文的句號 .組成,其它字元作為將來佔位符規範的保留。
實現者可以通過對佔位符採用不同的轉義和轉換策略,來生成最終的日誌。 而使用者在不知道上下文的前提下,不該提前轉義佔位符。
以下是乙個佔位符使用的例子:
/**
* 用上下文資訊替換記錄資訊中的佔位符
*/function
interpolate
($message, array $context = array())
'] = $val;
}// 替換記錄資訊中的佔位符,最後返回修改後的記錄資訊。
return strtr($message, $replace);
}// 含有帶花括號佔位符的記錄資訊。
$message = "user created";
// 帶有替換資訊的上下文陣列,鍵名為佔位符名稱,鍵值為替換值。
$context = array('username' => 'bolivar');
// 輸出 "username bolivar created"
echo interpolate($message, $context);
上述的介面、類和相關的異常類,以及一系列的實現檢測檔案,都包含在 psr/log 檔案包中。
<?php
namespace
psr\log;
/** * 日誌記錄例項
* * 日誌資訊變數 —— message, **必須**是乙個字串或是實現了 __tostring() 方法的物件。
* * 日誌資訊變數中**可以**包含格式如 「」 (代表foo) 的佔位符,
* 它將會由上下文陣列中鍵名為 "foo" 的鍵值替代。
* * 上下文陣列可以攜帶任意的資料,唯一的限制是,當它攜帶的是乙個 exception 物件時,它的鍵名 必須 是 "exception"。
* * 詳情可參閱:
*/inte***ce
loggerinte***ce
4. psr\log\loggerawareinte***ce
<?php
namespace
psr\log;
/** * logger-aware 定義例項
*/inte***ce
loggerawareinte***ce
<?php
namespace
psr\log;
/** * 日誌等級常量定義
*/class
loglevel
PHP編碼規範 PSR 3
本文制定了日誌類庫的通用介面規範。本規範的主要目的,是為了讓日誌類庫以簡單通用的方式,通過接收乙個psr log loggerinte ce物件,來記錄日誌資訊。框架以及cms內容管理系統如有需要,可以對此介面進行擴充套件,但需遵循本規範,這才能保證在使用第三方的類庫檔案時,日誌介面仍能正常對接。本...
PSR 規範 PSR 3 日誌介面規範
本文制定了日誌類庫的通用介面規範。本規範的主要目的,是為了讓日誌類庫以簡單通用的方式,通過接收乙個 psr log loggerinte ce 物件,來記錄日誌資訊。框架以及cms內容管理系統如有需要,可以 對此介面進行擴充套件,但需遵循本規範,這才能保證在使用第三方的類庫檔案時,日誌介面仍能正常對...
PSR規範 php編碼規範
前言 一開始寫 的時候,只是自己覺得怎麼舒服怎麼寫,什麼格式都是自己覺得順眼就怎麼安排,沒有怎麼閱讀什麼規範的 最近讀了 php the right way 發現寫 作為一門工程學還是要優雅,規範,清爽的寫,so,分享以下編碼規範,每次寫完 之後,自己都會拿出規範,讓自己的 風格盡量遵守這些編碼規則...