如何在WordPress中创建自定义错误日志文件(不使用WP_DEBUG_LOG)
实现WordPress插件独立错误日志记录
要实现仅记录插件自身错误的独立日志,无需依赖WordPress自带的WP_DEBUG_LOG,可以自行编写自定义日志函数,指定独立的日志文件路径,在插件的错误场景中调用该函数即可。
1. 编写自定义日志函数
在你的插件主文件中添加以下函数,处理日志写入逻辑:
function my_product_import_log_error( $message, $error_type = 'ERROR' ) { // 定义日志文件存储路径(插件目录下的logs文件夹) $log_dir = plugin_dir_path( __FILE__ ) . 'logs/'; $log_file = $log_dir . 'product-import-errors.log'; // 创建日志目录(如果不存在) if ( ! file_exists( $log_dir ) ) { mkdir( $log_dir, 0755, true ); } // 创建日志文件(如果不存在)并设置权限 if ( ! file_exists( $log_file ) ) { touch( $log_file ); chmod( $log_file, 0644 ); } // 格式化日志内容,包含时间、错误类型、消息和错误位置 $timestamp = date( 'Y-m-d H:i:s' ); $backtrace = debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS, 2 ); $caller = isset( $backtrace[1] ) ? $backtrace[1]['file'] . ' line ' . $backtrace[1]['line'] : 'Unknown location'; $log_entry = "[$timestamp] [$error_type] $message | $caller" . PHP_EOL; // 写入日志(追加模式,加锁避免并发写入冲突) file_put_contents( $log_file, $log_entry, FILE_APPEND | LOCK_EX ); }
2. 在插件中调用日志函数记录错误
在商品导入的业务逻辑中,遇到错误或异常时调用上述函数,将错误信息写入独立日志:
// 示例:商品导入逻辑中的异常捕获与日志记录 try { // 你的商品导入核心代码 $product = wc_get_product( $product_id ); if ( ! $product ) { throw new Exception( "商品ID $product_id 不存在,无法导入" ); } // 其他导入操作... } catch ( Exception $e ) { // 记录异常错误 my_product_import_log_error( $e->getMessage(), 'EXCEPTION' ); } // 示例:非致命警告记录 if ( empty( $product_data['price'] ) ) { my_product_import_log_error( "商品 {$product_data['name']} 价格为空,将使用默认值", 'WARNING' ); }
3. 注意事项
- 权限设置:确保
logs目录权限为0755,日志文件权限为0644,避免因权限不足无法写入日志。 - 日志安全:在
logs目录下创建.htaccess文件,禁止外部访问日志内容:Order deny,allow Deny from all - 日志清理:可添加自动清理逻辑,比如定期删除超过7天的日志,防止日志文件过大占用服务器空间。
内容的提问来源于stack exchange,提问作者Chris Tsironis
相关产品推荐
相关产品推荐

