1.日志配置 @app/config/main.php
打開后,可以看到log組件的配置如下:
'log' =>[
# 追蹤級別
# 消息跟蹤級別
# 在開發(fā)的時候,通常希望看到每個日志消息來自哪里。這個是能夠被實現(xiàn)的,通過配置 log 組件的 yii\log\Dispatcher::traceLevel 屬性, 就像下面這樣:
'traceLevel' => 3,
# 通過 yii\log\Logger 對象,日志消息被保存在一個數(shù)組里。為了這個數(shù)組的內存消耗, 當數(shù)組積累了一定數(shù)量的日志消息,日志對象每次都將刷新被記錄的消息到 log targets 中。 你可以通過配置 log 組件的 yii\log\Dispatcher::flushInterval 屬性來自定義數(shù)量
'flushInterval' => 1,
'targets' => [
'file' =>[
//'levels' => ['trace'],
'categories' => ['fecshop_debug'],
'class' => 'yii\log\FileTarget',
# 當 yii\log\Logger 對象刷新日志消息到 log targets 的時候,它們并 不能立即獲取導出的消息。相反,消息導出僅僅在一個日志目標累積了一定數(shù)量的過濾消息的時候才會發(fā)生。你可以通過配置 個別的 log targets 的 yii\log\Target::exportInterval 屬性來 自定義這個數(shù)量,就像下面這樣:
'exportInterval' => 1,
# 輸出文件
'logFile' => '@apphtml5/runtime/fecshop_logs/fecshop_debug.log',
# 你可以通過配置 yii\log\Target::prefix 的屬性來自定義格式,這個屬性是一個PHP可調用體返回的自定義消息前綴
'prefix' => function ($message) {
return $message;
},
# 除了消息前綴以外,日志目標也可以追加一些上下文信息到每組日志消息中。 默認情況下,這些全局的PHP變量的值被包含在:$_GET, $_POST, $_FILES, $_COOKIE,$_SESSION 和 $_SERVER 中。 你可以通過配置 yii\log\Target::logVars 屬性適應這個行為,這個屬性是你想要通過日志目標包含的全局變量名稱。 舉個例子,下面的日志目標配置指明了只有 $_SERVER 變量的值將被追加到日志消息中。
# 你可以將 logVars 配置成一個空數(shù)組來完全禁止上下文信息包含?;蛘呒偃缒阆胍獙崿F(xiàn)你自己提供上下文信息的方式, 你可以重寫 yii\log\Target::getContextMessage() 方法。
'logVars' => [],
],
],
],
如果要開啟log,可以把注釋去掉,查看
'logFile' => '@apphtml5/runtime/fecshop_logs/fecshop_debug.log',
對應的文件是否存在,如果不存在,需要新建文件 fecshop_debug.log
,并設置可寫即可完成配置。
2.日志的使用
\Yii::info($post_log,'fecshop_debug');
其中第二個參數(shù) fecshop_debug
對應上面的配置
'categories' => ['fecshop_debug'],
您可以定義多個 targets
每個targets的categories
不同,然后在輸出的時候做區(qū)分
就可以把日志寫入到不同的log文件里面了
通過上面的特性,可以知道log在使用過程中的一些情況,log的配置以及l(fā)og
文件如果存在問題,調用log的函數(shù)\Yii::info($post_log,'fecshop_debug')
不會卡住,會繼續(xù)執(zhí)行。
fecshop 代碼里面會加入一些log的代碼,在線上環(huán)境中可以把 fecshop_debug 對應的配置去掉 就不會輸出log,您可以自定義一些log的配置,然后做自定義log的輸出。
關于Yii Log更多的資料可以參閱: Yii Log
更多建議: