国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開發(fā) > PHP > 正文

Laravel 集成的 Monolog 庫(kù)對(duì)日志進(jìn)行配置和記錄實(shí)例

2024-05-04 21:50:11
字體:
供稿:網(wǎng)友

對(duì)于大型系統(tǒng)而言,日志是不可或缺的模塊,Laravel自然也對(duì)日志提供了完善的支持。目前Laravel集成了強(qiáng)大的Monolog庫(kù)進(jìn)行日志記錄。下面我們就來大致看一下Laravel中如何對(duì)日志進(jìn)行配置以及日志的簡(jiǎn)單使用。

1、日志處理器配置

首先我們來看日志處理器的配置。Laravel目前支持四種日志處理器:

single —— 將日志記錄到單個(gè)文件中。該日志處理器對(duì)應(yīng)Monolog的StreamHandler。

daily —— 以日期為單位將日志進(jìn)行歸檔,每天創(chuàng)建一個(gè)新的日志文件記錄日志。該日志處理器 對(duì)應(yīng)Monolog的RotatingFileHandler。

syslog —— 將日志記錄到syslog中。該日志處理器 對(duì)應(yīng)Monolog的SyslogHandler。

errorlog —— 將日志記錄到PHP的error_log中。該日志處理器 對(duì)應(yīng)Monolog的ErrorLogHandler。

項(xiàng)目實(shí)際日志處理器通過config/app.php中的log配置項(xiàng)決定,默認(rèn)配置值為single。這里我們使用默認(rèn)值,不做修改:

'log' => 'single',

當(dāng)然如果這四種方式滿足不了你的需求,還可以使用configureMonologUsing方法完全控制Monolog的日志處理器:

  1. $app->configureMonologUsing(function($monolog) { 
  2.     $monolog->pushHandler(...); 
  3. }); 

注:必須將上述這段代碼置于bootstrap/app.php文件返回$app之前處才能生效。

2、使用Log記錄日志

配置完成后,就可以在代碼中使用Log門面來記錄日志,Log門面背后實(shí)際上是Illuminate/Log/Writer,而在Writer的構(gòu)造函數(shù)中注入了Monolog/Logger。生成的日志文件存放在storage/logs目錄下。

目前,Log門面支持八種日志級(jí)別(使用RFC 5424標(biāo)準(zhǔn)):

  1. Log::emergency($error);     //緊急狀況,比如系統(tǒng)掛掉 
  2. Log::alert($error);     //需要立即采取行動(dòng)的問題,比如整站宕掉,數(shù)據(jù)庫(kù)異常等,這種狀況應(yīng)該通過短信提醒  
  3. Log::critical($error);     //嚴(yán)重問題,比如:應(yīng)用組件無效,意料之外的異常 
  4. Log::error($error);     //運(yùn)行時(shí)錯(cuò)誤,不需要立即處理但需要被記錄和監(jiān)控 
  5. Log::warning($error);    //警告但不是錯(cuò)誤,比如使用了被廢棄的API 
  6. Log::notice($error);     //普通但值得注意的事件 
  7. Log::info($error);     //感興趣的事件,比如登錄、退出 
  8. Log::debug($error);     //詳細(xì)的調(diào)試信息 

下面我們就來分別演示下這幾種日志級(jí)別的日志記錄,我們將在TestController的log方法中進(jìn)行測(cè)試:

  1. public function log(){ 
  2.     Log::emergency("系統(tǒng)掛掉了"); 
  3.     Log::alert("數(shù)據(jù)庫(kù)訪問異常"); 
  4.     Log::critical("系統(tǒng)出現(xiàn)未知錯(cuò)誤"); 
  5.     Log::error("指定變量不存在"); 
  6.     Log::warning("該方法已經(jīng)被廢棄"); 
  7.     Log::notice("用戶在異地登錄"); 
  8.     Log::info("用戶xxx登錄成功"); 
  9.     Log::debug("調(diào)試信息"); 

在瀏覽器中訪問http://laravel.app:8000/test/log,對(duì)應(yīng)在storage/logs/laravel.log記錄的日志信息如下:

[2015-11-09 14:24:05] local.EMERGENCY: 系統(tǒng)掛掉了

[2015-11-09 14:24:05] local.ALERT: 數(shù)據(jù)庫(kù)訪問異常

[2015-11-09 14:24:05] local.CRITICAL: 系統(tǒng)出現(xiàn)未知錯(cuò)誤

[2015-11-09 14:24:05] local.ERROR: 指定變量不存在

[2015-11-09 14:24:05] local.WARNING: 該方法已經(jīng)被廢棄

[2015-11-09 14:24:05] local.NOTICE: 用戶在異地登錄

[2015-11-09 14:24:05] local.INFO: 用戶xxx登錄成功

[2015-11-09 14:24:05] local.DEBUG: 調(diào)試信息

可見對(duì)應(yīng)的日志記錄包含了日志記錄時(shí)間、日志級(jí)別和日志消息等信息。當(dāng)然我們也可以在記錄日志時(shí)傳遞上下文信息:

Log::info("用戶xxx登錄成功",['user_id'=>1]);

對(duì)應(yīng)的日志記錄為:

[2015-11-09 14:25:47] local.INFO: 用戶xxx登錄成功 {"user_id":1}

如果要訪問底層Monolog的實(shí)例可以使用如下方法:

$monolog = Log::getMonolog();

dd($monolog);

我們可以在瀏覽器頁(yè)面中查看當(dāng)前Monolog對(duì)象實(shí)例的屬性信息:

Laravel Monolog 對(duì)象實(shí)例

我們可以從中看出當(dāng)前使用的日志處理器,日志記錄的位置,日志記錄的格式等信息。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 西青区| 遂宁市| 垦利县| 烟台市| 崇左市| 荆门市| 蕉岭县| 禹城市| 淮安市| 漠河县| 辛集市| 海阳市| 改则县| 山东省| 玛多县| 天门市| 城市| 南江县| 垫江县| 怀集县| 青海省| 弋阳县| 沾益县| 民乐县| 靖宇县| 桐城市| 九台市| 天镇县| 邳州市| 清水河县| 怀宁县| 敦煌市| 库伦旗| 蓬安县| 建昌县| 寿宁县| 凤台县| 阿克苏市| 麻江县| 广汉市| 布拖县|