我们知道,我们可以使用 PHP 的 error_log
函数来记录日志到日志文件中,然后在 wp-content/debug.log
中查看记录下来的日志,这个调试方法足够简单,但是比较原始。WooCommerce 为我们提供了更好的日志记录方法,那就是 WC_Logger
类。
激活 WooCommerce 日志
默认情况下,WooCommerce 的日志功能是启用的,为了保险起见,我们可以进入WooCommerce > Debug > Logs 查看一下,如果看到类似这样的信息,我们就需要手动启用一下日志:
激活复选框并点击 “保存更改 “后,页面上会出现更多设置,一切都非常简单,例如,我们可以决定将日志存储在/uploads/wc-logs/
还是数据库中、存储多少天,还可以更改日志的最低级别(我们将在下文讨论日志级别)。
使用WC_Logger创建调试信息
让我们从记录最简单的信息开始,试着添加下面的代码。
$wc_logger = wc_get_logger();
$wc_logger->debug( 'Custom log message' );
然后我父母会发现在状态 > 日志页面上出现了一个新日志:
你打开它,我们就可以看到刚才记录的日志信息。
更改调试信息源
现在我们来谈谈什么是 “日志源”。
从上面的截图中可以清楚地看到,我们的调试日志源是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' ) );
好了,现在我们的自定义调试信息出现在一个新的日志源中:
日志级别
根据调试信息的紧急程度,在 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.调试 | $wc_logger->debug() |
现在让我们尝试打印所有可能的日志信息类型!
$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' );
这就是我们得到的结果:
获取日志文件
最后但并非最不重要的一点是,你可以使用WC_Log_Handler_File::get_log_files()
以数组形式轻松获取所有可用的日志文件名。
$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 后台以非常友好的形式显示调试信息,我们不用再登录服务器就可以查看日志文件了,这无疑为我们提供了非常大的便利。