$context Context. * @param string $source Source component. */ public static function log( string $level, string $event, string $message, array $context = array(), string $source = '' ): void { $repository = new PluginLogRepository(); $repository->insert( array( 'level' => $level, 'event' => $event, 'message' => $message, 'context' => $context, 'source' => $source, ) ); if ( in_array( $level, array( 'error', 'warning' ), true ) ) { self::write_system_log( $level, $event . ': ' . $message, $context ); } } /** * Write to WooCommerce logger when available, otherwise WP/PHP error log. * * @param string $level Log level. * @param string $message Message. * @param array $context Context. */ private static function write_system_log( string $level, string $message, array $context ): void { if ( function_exists( 'wc_get_logger' ) ) { wc_get_logger()->log( 'error' === $level ? 'error' : 'warning', $message, array_merge( array( 'source' => 'inteltele' ), $context ) ); return; } error_log( 'IntelTele: ' . $message . ' ' . wp_json_encode( $context ) ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log } }