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;