首頁  >  文章  >  php框架  >  thinkphp日誌記錄設定教學課程

thinkphp日誌記錄設定教學課程

L
L轉載
2020-06-01 17:15:277545瀏覽

thinkphp日誌記錄設定教學課程

thinkphp 日誌記錄

#日誌的處理工作是由系統自動進行的,在開啟日誌記錄的情況下,會記錄下允許的日誌等級的所有日誌資訊。

其中,為了效能考慮,SQL日誌等級必須在偵錯模式開啟下有效,否則就不會記錄。系統的日誌記錄由核心的Think\Log類別及其驅動完成,提供了多種方式記錄了不同的等級的日誌資訊。

預設只是在偵錯模式記錄日誌,要在部署模式開啟日誌記錄,必須在設定中開啟LOG_RECORD參數,以及可以在應用程式設定檔中配置需要記錄的日誌級別,例如:

  1. <span class="str">'LOG_RECORD'<span class="pln"> <span class="pun">=><span class="pln"> <span class="kwd">true<span class="pun">,<span class="pln"> <span class="com">//開啟日誌記錄</span></span></span></span></span></span></span></span>
  2. <span class="str">#'LOG_LEVEL'<span class="pln"> <span class="pun">=><span class="str">'EMERG,ALERT,CRIT,ERR'<span class="pun">,<span class="pln"> <span class="com">// 只記錄EMERG ALERT CRIT ERR 錯誤</span></span></span></span></span> </span></span>

日誌等級

ThinkPHP對系統的日誌依照層級來分類,包括:

  • EMERG 嚴重錯誤,導致系統崩潰無法使用
  • ALERT 警戒錯誤,必須立即修改的錯誤
  • CRIT# 臨界值錯誤,超過臨界值的錯誤
  • ERR 一般性錯誤
  • WARN 警告性錯誤,需要發出警告的錯誤
  • #NOTICE 通知,程式可以運作但是還不夠完美的錯誤
  • INFO 訊息,程式輸出訊息
  • DEBUG調試,用於調試資訊
  • SQL SQL語句,該等級只在調試模式開啟時有效

記錄方式

日誌的記錄方式預設是檔案方式,可以透過驅動的方式來擴展支援更多的記錄方式。

記錄方式由LOG_TYPE參數配置,例如:

  1. <span class="str">#'LOG_TYPE'<span class="pln"> <span class="pun">=><span class="pln"> <span class="str">'File '<span class="pun">,<span class="pln"> <span class="com">// 日誌記錄類型預設為檔案方式</span></span></span></span></span></span></span></span>

#File方式記錄,對應的驅動程式檔案位於系統的Library/Think/Log/Driver/File.class.php

手動記錄

一般情況下,系統的日誌記錄是自動的,無需手動記錄,但是某些時候也需要手動記錄日誌信息,Log類提供了3個方法用於記錄日誌。

方法 描述
#Log::r​​ecord() 記錄日誌資訊到記憶體
Log::save() #把儲存在記憶體中的日誌資訊(用指定的記錄方式)寫入
Log::write() 即時寫入一條日誌訊息

由於系統在請求結束後會自動呼叫Log::save方法,所以通常,你只需要呼叫Log::r​​ecord記錄日誌資訊。

record方法用法如下:

  1. <span class="pln">\Think\Log<span class="pun">::<span class="pln">record<span class="pun">(<span class="str">'測試日誌訊息'<span class="pun">);</span></span></span></span></span></span>

#預設的話記錄的日誌等級是ERR,也可以指定日誌級別:

  1. <span class="pln">\Think\Log<span class="pun">::<span class="pln">record<span class="pun">(<span class="str">'測試日誌訊息,這是警告等級'<span class="pun">, <span class="str">'WARN'<span class="pun">);</span></span></span></span></span></span></span></span>

record方法只會記錄目前配置允許記錄的日誌等級的信息,如果應用配置為:

  1. <span class="str">'LOG_LEVEL'<span class="pln"> <span class="pun">=><span class="str">'EMERG, ALERT,CRIT,ERR'<span class="pun">,<span class="pln"> <span class="com">// 只記錄EMERG ALERT CRIT ERR 錯誤</span></span></span></span></span></span></span>

那麼上面的record方法記錄的日誌資訊會被直接過濾,或者你可以強制記錄:

  1. <span class="pln">\Think\Log<span class="pun"> ::<span class="pln">record<span class="pun">(<span class="str">'測試日誌訊息,這是警告等級'<span class="pun">,<span class="str">'WARN'<span class="pun">,<span class="kwd">true<span class="pun">);</span></span></span></span></span></span></span></span></span></span>

#採用record方法記錄的日誌資訊不是即時儲存的,如果需要即時記錄的話,可以採用write方法,例如:

  1. <span class="pln">\Think\Log<span class="pun">::<span class="pln">write<span class="pun">(<span class="str">'測試日誌訊息,這是警告級別,並且即時寫入'<span class="pun">,<span class="str">'WARN'<span class="pun">);</span></span></span></span></span></span></span> </span>
##write方法寫入日誌的時候不受配置的允許日誌等級影響,可以即時寫入任意等級的日誌資訊。

推薦教學:《
TP5

以上是thinkphp日誌記錄設定教學課程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除