Commit 7f304617 authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

UP : Lecture des logs depuis l'interface d'administration

parent 8ae454a2
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ return array(
                        'discipline', // OK
                        'documentSections',
                        'index',
                        'logs',
                        'messages',
                        'organizationRole',
                        'organizationRoleApi',
+8 −1
Original line number Diff line number Diff line
@@ -1614,7 +1614,14 @@ administration:


    child_routes:

        # Gestion et chargement du référenciel des pays
        logs:
            type: segment
            may_terminate: true
            options:
                route: /logs
                defaults:
                    action: logs
        # Gestion et chargement du référenciel des pays
        countries:
            type: segment
+19 −1
Original line number Diff line number Diff line
@@ -147,7 +147,7 @@ class AdministrationController extends AbstractOscarController implements UsePro
        $this->getOscarUserContextService()->check(Privileges::MAINTENANCE_MENU_ADMIN);

        if ($this->isAjax()) {
            $response = shell_exec('journalctl --unit=oscarworker.service -n 25 --no-pager');
            $response = shell_exec('journalctl -u oscarworker -n 25 --no-pager');
            if ($response === null) {
                $response = "Impossible de charger le status de OscarWorker";
            }
@@ -156,6 +156,24 @@ class AdministrationController extends AbstractOscarController implements UsePro
        return [];
    }

    public function logsAction()
    {

        $this->getOscarUserContextService()->check(Privileges::MAINTENANCE_MENU_ADMIN);

        if ($this->isAjax()) {
            $response = shell_exec('tail -n 15 ' . $this->getOscarConfigurationService()->getLoggerFilePath());
            if ($response === null) {
                $response = "Impossible de charger les logs oscar";
            }
            return $this->getResponseOk($response);
        }
        return [
            'log_file' => $this->getOscarConfigurationService()->getLoggerFilePath(),
            'log_level' => $this->getOscarConfigurationService()->getLoggerLevel(),
        ];
    }

    public function parametersAction()
    {
        // Récupération des rôles en fonction d'un privilège :
+1 −1
Original line number Diff line number Diff line
@@ -93,7 +93,7 @@ class OscarConfigurationService implements ServiceLocatorAwareInterface
     */
    public function getLoggerFilePath(): string
    {
        return $this->getOptionalConfiguration('log_path', __DIR__ . '/../../../../../logs/oscar.log');
        return realpath($this->getOptionalConfiguration('log_path', __DIR__ . '/../../../../../logs/oscar.log'));
    }

    /**
+2 −2
Original line number Diff line number Diff line
<section class="container">
    <h1><i class="icon-user-md"></i>Logs</h1>
    <p class="alert alert-info">
        Cet écran n'affiche que les 25 dernières lignes de la sortie standard <strong>logs/oscar.log</strong>. Pour afficher les logs en temps réél, connectez-vous à l'instance d'Oscar et utilisez la commande <code>tail -f logs/oscar.log</code>.
        Cet écran n'affiche que les 25 dernières lignes de la sortie standard <strong><?= $log_file ?></strong>. Pour afficher les logs en temps réél, connectez-vous à l'instance d'Oscar et utilisez la commande <code>tail -f <?= $log_file ?></code>.
    </p>

    <p>
        Le niveau de log est fixé à <code>LEVEL</code>
        Le niveau de log est fixé à <code><?= $log_level ?></code>
    </p>

    <pre id="logs">