diff --git a/packages/plugin/src/Bundles/Integrations/Providers/IntegrationLoggerProvider.php b/packages/plugin/src/Bundles/Integrations/Providers/IntegrationLoggerProvider.php index b618e20df..ca4d22551 100644 --- a/packages/plugin/src/Bundles/Integrations/Providers/IntegrationLoggerProvider.php +++ b/packages/plugin/src/Bundles/Integrations/Providers/IntegrationLoggerProvider.php @@ -13,6 +13,8 @@ class IntegrationLoggerProvider { + public const LOG_FILE = 'freeform-integrations.log'; + private int $level; public function __construct( @@ -39,7 +41,7 @@ public function getLogger(IntegrationInterface|Type $integration): LoggerInterfa ->logger ->getLogger( $logCategory, - 'freeform-integrations.log', + self::LOG_FILE, $this->level ) ; diff --git a/packages/plugin/src/Bundles/Routing/routes/cp/errors.php b/packages/plugin/src/Bundles/Routing/routes/cp/errors.php index 7ff31a074..181c1ae7f 100644 --- a/packages/plugin/src/Bundles/Routing/routes/cp/errors.php +++ b/packages/plugin/src/Bundles/Routing/routes/cp/errors.php @@ -2,5 +2,6 @@ return [ 'freeform/settings/error-log' => 'freeform/logs/error', + 'freeform/settings/integrations-log' => 'freeform/logs/integrations', 'freeform/logs/clear' => 'freeform/logs/clear', ]; diff --git a/packages/plugin/src/Library/Logging/FreeformLogger.php b/packages/plugin/src/Library/Logging/FreeformLogger.php index 7c6b47406..dd3bd4409 100644 --- a/packages/plugin/src/Library/Logging/FreeformLogger.php +++ b/packages/plugin/src/Library/Logging/FreeformLogger.php @@ -76,8 +76,8 @@ class FreeformLogger ]; private static array $levelColorMap = [ - 'DEBUG' => '#CCCCCC', - 'INFO' => '#6c757d', + 'DEBUG' => '#6c757d', + 'INFO' => '#0284c7', 'NOTICE' => '#28a745', 'WARNING' => '#ffc107', 'ERROR' => '#dc3545', @@ -97,9 +97,9 @@ public static function getInstance(string $category, ?string $fileName = null, ? return self::$loggers[$category]; } - public static function getLogfilePath(?string $fileName = 'freeform.log'): string + public static function getLogfilePath(?string $fileName): string { - return \Craft::$app->path->getLogPath().'/'.$fileName; + return \Craft::$app->path->getLogPath().'/'.($fileName ?? 'freeform.log'); } public static function getColor(string $level): string diff --git a/packages/plugin/src/Resources/css/cp/logs/logs.css b/packages/plugin/src/Resources/css/cp/logs/logs.css index 0ba481444..ca4b7659a 100644 --- a/packages/plugin/src/Resources/css/cp/logs/logs.css +++ b/packages/plugin/src/Resources/css/cp/logs/logs.css @@ -1 +1 @@ -.log-badge{display:inline-block;padding:0 5px;box-sizing:border-box;border-radius:3px;color:#fff;font-size:11px;font-weight:bold}.log-badge.log-level-debug{background-color:#ccc}.log-badge.log-level-info{background-color:#6c757d}.log-badge.log-level-notice{background-color:#28a745}.log-badge.log-level-warning{background-color:#ffc107}.log-badge.log-level-error{background-color:#dc3545}.log-badge.log-level-critical{background-color:#dc3545}.log-badge.log-level-alert{background-color:#dc3545}.log-badge.log-level-emergency{background-color:#dc3545}.log-message{color:#b1b1b1;width:70%;word-break:break-word;overflow-wrap:break-word} +.log-badge{display:inline-block;padding:0 5px;box-sizing:border-box;border-radius:3px;color:#fff;font-size:11px;font-weight:bold}.log-badge.log-level-debug{background-color:#6c757d}.log-badge.log-level-info{background-color:#0284c7}.log-badge.log-level-notice{background-color:#28a745}.log-badge.log-level-warning{background-color:#ffc107}.log-badge.log-level-error{background-color:#dc3545}.log-badge.log-level-critical{background-color:#dc3545}.log-badge.log-level-alert{background-color:#dc3545}.log-badge.log-level-emergency{background-color:#dc3545}.log-message{color:#b1b1b1;width:70%;word-break:break-word;overflow-wrap:break-word} diff --git a/packages/plugin/src/Services/LoggerService.php b/packages/plugin/src/Services/LoggerService.php index 6fbc2b030..01ca8e0c6 100644 --- a/packages/plugin/src/Services/LoggerService.php +++ b/packages/plugin/src/Services/LoggerService.php @@ -16,9 +16,9 @@ public function getLogger(string $category, ?string $fileName = null, ?int $leve return FreeformLogger::getInstance($category, $fileName, $level); } - public function getLogReader(): LineLogReader + public function getLogReader(?string $fileName = null): LineLogReader { - return new LineLogReader(FreeformLogger::getLogfilePath()); + return new LineLogReader(FreeformLogger::getLogfilePath($fileName)); } public function registerJsTranslations(View $view): void diff --git a/packages/plugin/src/Services/SettingsService.php b/packages/plugin/src/Services/SettingsService.php index 49fa54c26..c3194aafe 100644 --- a/packages/plugin/src/Services/SettingsService.php +++ b/packages/plugin/src/Services/SettingsService.php @@ -14,6 +14,7 @@ namespace Solspace\Freeform\Services; use Solspace\Freeform\Bundles\Integrations\Providers\FormIntegrationsProvider; +use Solspace\Freeform\Bundles\Integrations\Providers\IntegrationLoggerProvider; use Solspace\Freeform\Events\Freeform\RegisterSettingsNavigationEvent; use Solspace\Freeform\Form\Form; use Solspace\Freeform\Freeform; @@ -235,6 +236,7 @@ public function getSettingsModel(): Settings public function getSettingsNavigation(): array { $errorCount = Freeform::getInstance()->logger->getLogReader()->count(); + $integrationsCount = Freeform::getInstance()->logger->getLogReader(IntegrationLoggerProvider::LOG_FILE)->count(); $nav = [ 'general' => ['title' => Freeform::t('General Settings')], @@ -258,8 +260,10 @@ public function getSettingsNavigation(): array 'integrations/other' => ['title' => Freeform::t('Other')], 'hdalerts' => ['heading' => Freeform::t('Reliability')], 'notices-and-alerts' => ['title' => Freeform::t('Notices & Alerts')], - 'error-log' => ['title' => Freeform::t('Error Log {count}', ['count' => $errorCount])], 'diagnostics' => ['title' => Freeform::t('Diagnostics')], + 'hdlogs' => ['heading' => Freeform::t('Logs')], + 'error-log' => ['title' => Freeform::t('Errors {count}', ['count' => $errorCount])], + 'integrations-log' => ['title' => Freeform::t('Integrations {count}', ['count' => $integrationsCount])], ]; if (!$this->isAllowAdminEdit()) { diff --git a/packages/plugin/src/controllers/LogsController.php b/packages/plugin/src/controllers/LogsController.php index da4495ca0..d8ac29e80 100644 --- a/packages/plugin/src/controllers/LogsController.php +++ b/packages/plugin/src/controllers/LogsController.php @@ -2,13 +2,10 @@ namespace Solspace\Freeform\controllers; +use Solspace\Freeform\Bundles\Integrations\Providers\IntegrationLoggerProvider; use Solspace\Freeform\Freeform; use Solspace\Freeform\Library\Helpers\PermissionHelper; use Solspace\Freeform\Resources\Bundles\LogBundle; -use yii\base\Exception; -use yii\base\InvalidConfigException; -use yii\web\BadRequestHttpException; -use yii\web\ForbiddenHttpException; use yii\web\Response; class LogsController extends BaseController @@ -27,10 +24,6 @@ public function actionIndex(): Response ); } - /** - * @throws Exception - * @throws InvalidConfigException - */ public function actionError(): Response { $logReader = $this->getLoggerService()->getLogReader(); @@ -47,11 +40,22 @@ public function actionError(): Response ); } - /** - * @throws BadRequestHttpException - * @throws ForbiddenHttpException - * @throws Exception - */ + public function actionIntegrations(): Response + { + $logReader = $this->getLoggerService()->getLogReader(IntegrationLoggerProvider::LOG_FILE); + + $this->getLoggerService()->registerJsTranslations($this->view); + + \Craft::$app->view->registerAssetBundle(LogBundle::class); + + return $this->renderTemplate( + 'freeform/logs/error', + [ + 'logReader' => $logReader, + ] + ); + } + public function actionClear(): Response { $this->requirePostRequest(); diff --git a/packages/plugin/src/templates/logs/error.twig b/packages/plugin/src/templates/logs/error.twig index 5dcd86c11..e65a900a7 100644 --- a/packages/plugin/src/templates/logs/error.twig +++ b/packages/plugin/src/templates/logs/error.twig @@ -8,10 +8,10 @@ {% set crumbs = [ { label: craft.freeform.name, url: url("freeform") }, { label: "Settings"|t("freeform"), url: url("freeform/settings") }, - { label: "Reliability"|t("freeform"), url: url("freeform/settings" ~ "/" ~ segment3) }, + { label: "Logs"|t("freeform"), url: url("freeform/settings" ~ "/" ~ segment3) }, ] %} -{% set title = "Error Log"|t('freeform') %} +{% set title = segment3|title|replace({'-': " "})|t('freeform') %} {% block actionButton %} diff --git a/packages/styles/src/cp/logs/logs.scss b/packages/styles/src/cp/logs/logs.scss index 823619e54..b758ba320 100644 --- a/packages/styles/src/cp/logs/logs.scss +++ b/packages/styles/src/cp/logs/logs.scss @@ -8,10 +8,10 @@ font-weight: bold; &.log-level-debug { - background-color: #CCCCCC; + background-color: #6c757d; } &.log-level-info { - background-color: #6c757d; + background-color: #0284c7; } &.log-level-notice { background-color: #28a745;