我們知道,我們可以使用 PHP 的 error_log 函數(shù)來記錄日志到日志文件中,然后在 wp-content/debug.log 中查看記錄下來的日志,這個調(diào)試方法足夠簡單,但是比較原始。WooCommerce 為我們提供了更好的日志記錄方法,那就是 WC_Logger 類。
激活 WooCommerce 日志
默認情況下,WooCommerce 的日志功能是啟用的,為了保險起見,我們可以進入WooCommerce > Debug > Logs 查看一下,如果看到類似這樣的信息,我們就需要手動啟用一下日志:

激活復選框并點擊 “保存更改 “后,頁面上會出現(xiàn)更多設置,一切都非常簡單,例如,我們可以決定將日志存儲在/uploads/wc-logs/還是數(shù)據(jù)庫中、存儲多少天,還可以更改日志的最低級別(我們將在下文討論日志級別)。

使用WC_Logger創(chuàng)建調(diào)試信息
讓我們從記錄最簡單的信息開始,試著添加下面的代碼。
$wc_logger = wc_get_logger();
$wc_logger->debug( 'Custom log message' );
然后我父母會發(fā)現(xiàn)在狀態(tài) > 日志頁面上出現(xiàn)了一個新日志:

你打開它,我們就可以看到剛才記錄的日志信息。

更改調(diào)試信息源
現(xiàn)在我們來談談什么是 “日志源”。
從上面的截圖中可以清楚地看到,我們的調(diào)試日志源是plugin-rudr-simple-inventory-sync-for-woocommerce。
首先,這個來源信息是自動生成的,在上面的代碼中,我們沒有提供日志源信息。因為我們在Wenprise Simple Sync插件中使用了debug()方法,主要是在wenprise-simple-sync-for-woocommerce.php文件中,日志源是按照plugin-{PLUGIN SLUG} 模式生成的,就是這么簡單。
好消息是,如果需要,我們也可以自定義日志來源。
$wc_logger = wc_get_logger();
$wc_logger->debug( 'Custom log message', array( 'source' => 'wprs-sync' ) );
好了,現(xiàn)在我們的自定義調(diào)試信息出現(xiàn)在一個新的日志源中:

日志級別
根據(jù)調(diào)試信息的緊急程度,在 WC_Logger 類中有不同的日志級別可供我們使用。
| 日志級別 | WC_Logger 方法 |
|---|---|
| 0.緊急 | $wc_logger->emergency() |
| 1.警報 | $wc_logger->alert() |
| 2.危急 | $wc_logger->critical() |
| 3.錯誤 | $wc_logger->error() |
| 4.警告 | $wc_logger->warning() |
| 5.通知 | $wc_logger->notice() |
| 6.信息 | $wc_logger->info() |
| 7.調(diào)試 | $wc_logger->debug() |
現(xiàn)在讓我們嘗試打印所有可能的日志信息類型!
$wc_logger = wc_get_logger();
$wc_logger->emergency( 'Custom emergency message' );
$wc_logger->alert( 'Custom alert message' );
$wc_logger->critical( 'Custom critical message' );
$wc_logger->error( 'Custom error message' );
$wc_logger->warning( 'Custom warning message' );
$wc_logger->notice( 'Custom notice' );
$wc_logger->info( 'Custom info message' );
$wc_logger->debug( 'Custom debug message' );
這就是我們得到的結(jié)果:

獲取日志文件
最后但并非最不重要的一點是,你可以使用WC_Log_Handler_File::get_log_files() 以數(shù)組形式輕松獲取所有可用的日志文件名。
$log_files = WC_Log_Handler_File::get_log_files();
print_r( $log_files );
/*
Array
(
[inventory-sync-2024-05-11-e0930f2abe2090418ae706d63df70418-log] => inventory-sync-2024-05-11-e0930f2abe2090418ae706d63df70418.log
[plugin-rudr-simple-inventory-sync-for-woocommerce-2024-05-11-962ebe40bad4004ef06cd4171353b636-log] => plugin-rudr-simple-inventory-sync-for-woocommerce-2024-05-11-962ebe40bad4004ef06cd4171353b636.log
)
*/
和error_log 不同的是,WooCommerce 的 WC_Logger 可以在 WooCommerce 后臺以非常友好的形式顯示調(diào)試信息,我們不用再登錄服務器就可以查看日志文件了,這無疑為我們提供了非常大的便利。


