# 日志記錄
[上一頁](# "上一頁")[下一頁](# "下一頁")
日志的處理工作是由系統自動進行的,在開啟日志記錄的情況下,會記錄下允許的日志級別的所有日志信息。
其中,為了性能考慮,SQL日志級別必須在調試模式開啟下有效,否則就不會記錄。系統的日志記錄由核心的Think\Log類及其驅動完成,提供了多種方式記錄了不同的級別的日志信息。
默認情況下只是在調試模式記錄日志,要在部署模式開啟日志記錄,必須在配置中開啟`LOG_RECORD`參數,以及可以在應用配置文件中配置需要記錄的日志級別,例如:
~~~
'LOG_RECORD' => true, // 開啟日志記錄
'LOG_LEVEL' =>'EMERG,ALERT,CRIT,ERR', // 只記錄EMERG ALERT CRIT ERR 錯誤
~~~
> 日志的記錄并非實時保存的,只有當當前請求完成或者異常結束后才會實際寫入日志信息,否則只是記錄在內存中。
### 日志級別
ThinkPHP對系統的日志按照級別來分類,包括:
- **EMERG** 嚴重錯誤,導致系統崩潰無法使用
- **ALERT** 警戒性錯誤, 必須被立即修改的錯誤
- **CRIT** 臨界值錯誤, 超過臨界值的錯誤
- **ERR** 一般性錯誤
- **WARN** 警告性錯誤, 需要發出警告的錯誤
- **NOTICE** 通知,程序可以運行但是還不夠完美的錯誤
- **INFO** 信息,程序輸出信息
- **DEBUG** 調試,用于調試信息
- **SQL** SQL語句,該級別只在調試模式開啟時有效
### 記錄方式
日志的記錄方式默認是文件方式,可以通過驅動的方式來擴展支持更多的記錄方式。
記錄方式由LOG_TYPE參數配置,例如:
~~~
'LOG_TYPE' => 'File', // 日志記錄類型 默認為文件方式
~~~
> File方式記錄,對應的驅動文件位于系統的`Library/Think/Log/Driver/File.class.php`。
### 手動記錄
一般情況下,系統的日志記錄是自動的,無需手動記錄,但是某些時候也需要手動記錄日志信息,Log類提供了3個方法用于記錄日志。
| 方法 | 描述 |
|-----|-----|
| Log::record() | 記錄日志信息到內存 |
| Log::save() | 把保存在內存中的日志信息(用指定的記錄方式)寫入 |
| Log::write() | 實時寫入一條日志信息 |
由于系統在請求結束后會自動調用Log::save方法,所以通常,你只需要調用Log::record記錄日志信息即可。
record方法用法如下:
~~~
Think\Log::record('測試日志信息');
~~~
默認的話記錄的日志級別是ERR,也可以指定日志級別:
~~~
Think\Log::record('測試日志信息,這是警告級別','WARN');
~~~
record方法只會記錄當前配置允許記錄的日志級別的信息,如果應用配置為:
~~~
'LOG_LEVEL' =>'EMERG,ALERT,CRIT,ERR', // 只記錄EMERG ALERT CRIT ERR 錯誤
~~~
那么上面的record方法記錄的日志信息會被直接過濾,或者你可以強制記錄:
~~~
Think\Log::record('測試日志信息,這是警告級別','WARN',true);
~~~
采用record方法記錄的日志信息不是實時保存的,如果需要實時記錄的話,可以采用write方法,例如:
~~~
Think\Log::write('測試日志信息,這是警告級別,并且實時寫入','WARN');
~~~
write方法寫入日志的時候 不受配置的允許日志級別影響,可以實時寫入任意級別的日志信息。
[上一頁](# "上一頁")[下一頁](# "下一頁")
- 序言
- 基礎
- 獲取ThinkPHP
- 環境要求
- 目錄結構
- 入口文件
- 自動生成
- 模塊
- 控制器
- 開發規范
- 配置
- 配置格式
- 配置加載
- 讀取配置
- 動態配置
- 擴展配置
- 批量配置
- 架構
- 模塊化設計
- URL模式
- 多層MVC
- CBD模式
- 命名空間
- 自動加載
- 應用模式
- 項目編譯
- 系統流程
- 路由
- 路由定義
- 規則路由
- 正則路由
- 靜態路由
- 閉包支持
- 實例說明
- 控制器
- 控制器定義
- 前置和后置操作
- Action參數綁定
- 偽靜態
- URL大小寫
- URL生成
- AJAX返回
- 跳轉和重定向
- 輸入變量
- 請求類型
- 空操作
- 空控制器
- 操作綁定到類
- 模型
- 模型定義
- 模型實例化
- 字段定義
- 連接數據庫
- 切換數據庫
- 分布式數據庫支持
- 連貫操作
- WHERE
- TABLE
- ALIAS
- DATA
- FIELD
- ORDER
- LIMIT
- PAGE
- GROUP
- HAVING
- JOIN
- UNION
- DISTINCT
- LOCK
- CACHE
- COMMENT
- RELATION
- 命名范圍
- CURD操作
- 數據創建
- 數據寫入
- 數據讀取
- 數據更新
- 數據刪除
- ActiveRecord
- 字段映射
- 查詢語言
- 查詢方式
- 表達式查詢
- 快捷查詢
- 區間查詢
- 組合查詢
- 統計查詢
- SQL查詢
- 動態查詢
- 子查詢
- 自動驗證
- 自動完成
- 參數綁定
- 虛擬模型
- 模型分層
- 視圖模型
- 關聯模型
- 高級模型
- Mongo模型
- 視圖
- 模板定義
- 模板主題
- 模板賦值
- 模板渲染
- 獲取模板地址
- 獲取內容
- 模板引擎
- 模板
- 變量輸出
- 系統變量
- 使用函數
- 默認值輸出
- 使用運算符
- 標簽庫
- 模板繼承
- 修改定界符
- 三元運算
- 包含文件
- 內置標簽
- Volist標簽
- Foreach標簽
- For標簽
- Switch標簽
- 比較標簽
- 范圍判斷標簽
- IF標簽
- Present標簽
- Empty標簽
- Defined標簽
- Assign標簽
- Define標簽
- 標簽嵌套
- import標簽
- 使用PHP代碼
- 原樣輸出
- 模板注釋
- 模板布局
- 模板替換
- 調試
- 調試模式
- 異常處理
- 日志記錄
- 頁面Trace
- Trace方法
- 變量調試
- 性能調試
- 錯誤調試
- 模型調試
- 緩存
- 數據緩存
- 快速緩存
- 查詢緩存
- SQL解析緩存
- 靜態緩存
- 安全
- 輸入過濾
- 表單合法性檢測
- 表單令牌
- 防止SQL注入
- 目錄安全文件
- 保護模板文件
- 上傳安全
- 防止XSS攻擊
- 其他安全建議
- 擴展
- 類庫擴展
- 驅動擴展
- 緩存驅動
- 數據庫驅動
- 日志驅動
- Session驅動
- 存儲驅動
- 模板引擎驅動
- 標簽庫驅動
- 行為擴展
- 標簽擴展
- Widget擴展
- 應用模式
- 部署
- PATH_INFO支持
- URL重寫
- 模塊部署
- 域名部署
- 入口綁定
- 替換入口
- 專題
- SESSION支持
- Cookie支持
- 多語言支持
- 數據分頁
- 文件上傳
- 驗證碼
- 圖像處理
- RESTFul
- RPC
- SAE
- IP獲取和定位
- 附錄
- 常量參考
- 配置參考
- 升級指導
- 更新日志
- 鳴謝
- 關于