# 日志與錯誤處理
## 日志
Blink 提供了一個構建在 Monolog 日志庫之上、兼容 PSR-3 日志標準的日志服務組件。通過日志服務,我們可以輕松的把各種類型的消息記錄到諸如文件、 數據庫、郵件等媒介中。
為了記錄日志消息,我們首先需要配置日志服務,下面是 Blink 的 seed 項目提供的默認日志配置:
~~~
'log' => [
'class' => 'blink\log\Logger',
'targets' => [
'file' => [
'class' => 'blink\log\StreamTarget',
'enabled' => true,
'stream' => 'php://stderr',
'level' => 'info',
]
],
],
~~~
在這個例子中,我們定義了一個叫做?`file`?的媒介,目的是將所有消息級別小于或等于?*INFO*?的消息寫入到?`stderr`中:
另外,獲取日志服務和寫日志也是很方便的,實例如下:
~~~
// 獲取日志服務的實例
$log = app('log');
// emergency 日志類型,系統不可用
$log->emergency('my message');
// alert 日志類型,必要的措施必須馬上采取
$log->alert('my message');
// critical 日志類型,危險條件觸發
$log->critical('my message');
// error 日志類型,運行時錯誤
$log->error('my message');
// warning 日志類型,警告
$log->warning('my message');
// notice 日志類型,通常且值得注意的事件
$log->notice('my message');
// info 日志類型,記錄感興趣的事件
$log->info('my message');
// debug 日志類型,記錄詳細的調試信息
$log->debug('my message');
~~~
## 錯誤處理
Blink 中,所有的 PHP 錯誤都會自動轉換成?`blink\core\ErrorException`?異常,通過這個特性,我們可以用 try ... catch 來捕獲 PHP 錯誤。
Blink 提供由?`blink\core\ErrorHandler`?類實現的?`errorHandler`?服務來處理 PHP 異常。默認情況下,`errorHandler`會把所有的異常上報給?`log`?服務,我們也可以實現自己的?`errorHandler`,采用不同的方式來處理這些異常,比如上報給 Sentry。