diff --git a/includes/class-logger.php b/includes/class-logger.php index 4bf48a977f..6a31567744 100644 --- a/includes/class-logger.php +++ b/includes/class-logger.php @@ -76,4 +76,41 @@ private static function get_pid() { public static function error( $payload, $header = 'NEWSPACK' ) { return self::log( $payload, $header, 'error' ); } + + /** + * A logger for newspack manager logging. + * + * @param string $code The log code (i.e. newspack_google_login). + * @param string $message The message to log. + * @param array $data The data to log. + * Optional. Additional parameters. + * @type string $user_email The current users email address. + * @type file $file The name of the file to write the local log to. + * @param string $type The type of log. Defaults to 'error'. + * @param string $log_level The Log level. + */ + public static function newspack_log( $code, $message, $data, $type = 'error', $log_level = 2 ) { + $email = ''; + if ( isset( $data['user_email'] ) ) { + $email = $data['user_email']; + unset( $data['user_email'] ); + } + $file = $code; + if ( isset( $data['file'] ) ) { + $file = $data['file']; + unset( $data['file'] ); + } + do_action( + 'newspack_log', + $code, + $message, + [ + 'type' => $type, + 'data' => $data, + 'user_email' => $email, + 'file' => $file, + 'log_level' => $log_level, + ] + ); + } } diff --git a/includes/class-newspack.php b/includes/class-newspack.php index 0be50a7634..8f844d245c 100644 --- a/includes/class-newspack.php +++ b/includes/class-newspack.php @@ -155,6 +155,7 @@ private function includes() { include_once NEWSPACK_ABSPATH . 'includes/plugins/class-jetpack.php'; include_once NEWSPACK_ABSPATH . 'includes/plugins/class-gravityforms.php'; include_once NEWSPACK_ABSPATH . 'includes/plugins/google-site-kit/class-googlesitekit.php'; + include_once NEWSPACK_ABSPATH . 'includes/plugins/google-site-kit/class-googlesitekit-logger.php'; include_once NEWSPACK_ABSPATH . 'includes/plugins/class-mailchimp-for-woocommerce.php'; include_once NEWSPACK_ABSPATH . 'includes/plugins/class-onesignal.php'; include_once NEWSPACK_ABSPATH . 'includes/plugins/class-organic-profile-block.php'; diff --git a/includes/plugins/google-site-kit/class-googlesitekit-logger.php b/includes/plugins/google-site-kit/class-googlesitekit-logger.php new file mode 100644 index 0000000000..4c421f4868 --- /dev/null +++ b/includes/plugins/google-site-kit/class-googlesitekit-logger.php @@ -0,0 +1,141 @@ + $code, + 'user_email' => wp_get_current_user()->user_email, + ]; + if ( $backtrace ) { + $e = new \Exception(); + $data['backtrace'] = $e->getTraceAsString(); + } + Logger::newspack_log( $code, $message, $data, 'error', $log_level ); + } +} +GoogleSiteKit_Logger::init(); diff --git a/includes/plugins/google-site-kit/class-googlesitekit.php b/includes/plugins/google-site-kit/class-googlesitekit.php index 704740aec2..e6a25e50c2 100644 --- a/includes/plugins/google-site-kit/class-googlesitekit.php +++ b/includes/plugins/google-site-kit/class-googlesitekit.php @@ -70,6 +70,15 @@ public static function insert_ga4_analytics() {