Monolog(4)--Processor 又是哪位?
昨天了解 Formatter 的運作方法了,而資料夾還有另一個角色 Processor,今天來看看它到底裡面賣的是什麼藥。
從使用它到了解它
Processor 有兩個地方可以使用,分別在 Logger 實作與 HandlerInterface 定義,都有 Processor 的影子。
先來看看 Logger 實作的介面:
調整程式碼風格(Coding Style)
雖然程式碼風格跟設計沒有關係,但是程式碼風格不一致,對理解程式是一個很大的阻礙。調整程式碼風格,是不會影響功能的,因此很適合拿來當重構的暖身。
Delivery
截至目前為止,應用程式該有基本功能都已經完備了,再來就是最後一哩路了--交付。
Monolog(3)--Formatter 與 Handler 之間的關係
打開 Monolog 的資料夾,會發現除了昨天提到的 Logger 與 Handler 之外,還有幾個沒提到的角色,如 Formatter 或是 Processor。
今天我們就來看看 Formatter 裡面做了什麼事。
從使用它到了解它
首先當然先看看它如何使用!我們可以從先從 Handler\HandlerInterface 找到相關的實作:
準備工作的簡短回顧(一)
在拿到程式碼的時候,我們並不是立刻把程式碼砍掉重練,而是先做一連串的準備工作:
HTTP Server
因為參加的是 Modern Web 主題,不管怎樣,還是跟 Web 掛勾一下好了。
Monolog(2)--從使用它到了解它
在開始拆解前,首先我們先了解該如何使用它,官方提供的 Basic Usage 如下:
導入驗收測試(二)
今天要寫瀏覽器的驗收測試。
Monolog(1)--死機筆記本
身為一個開發者,有時會需要知道維運的過程中發生了什麼意外錯誤訊息。現在 Slack 很紅,只要開個 channel 設定一下,就會生出一個 webhook url。然後只要透過 HTTP 協定,就能把訊息往 channel 送。
但有些人是 Atlassian 派,覺得 HipChat 才是王道;又有人說,我想用線上服務 Rollbar 來記錄;甚至還有人習慣收 Email 呢。
這麼多種服務,每次都要看文件串接,真的有點麻煩。
串接還是小事,我們再往下看:
身為一個 PHP 開發者,開發或測試階段會想知道某段程式發生了什麼事,最常用的招數相信大家都知道--echo 放在程式裡面就能看得到內容啦!但有時不是單純某一段程式,而是需要記錄很多位置的內容;又或是記錄的內容不是要印出來,而是要存在其他地方。
基於種種因素,echo 雖然是個 debug 最簡單也最常用的工具,但在這多變的需求下,就顯得太簡陋了。
又或是上述有提到串接很多種提醒機制,而有種需求是同個訊息內容,要分派到不同的提醒。比方說 DB 連線失敗要同時通知 Slack 給開發團隊、寄簡訊給 DBA、發 mail 給老闆。這樣 DB 連線豈不要寫三行程式才能做這三件事?
這還不打緊,要是哪天寄簡訊的 SDK 改版了,程式的所有角落都得掃過一次,不然 DBA 收不到簡訊,服務就完蛋了!
Monolog 正是解決上述問題的好夥伴。
- 要串接常見的服務?可以!
- 要用簡單的語法記錄多個位置?可以!
- 同時通知多種服務?可以,而且只要使用 PSR-3 提供的介面就行了。
後面我們來一起看看 Monolog 是如何解決這些問題吧。
Parse JSON
昨天把網頁載好,不過裡面的資料似乎很難處理。後來有找到另一個 API: