소스 검색

Add logs serveur (test)

stany.ferer 3 달 전
부모
커밋
28bfc99f6f
3개의 변경된 파일94개의 추가작업 그리고 0개의 파일을 삭제
  1. 9 0
      core/views/pages/cms.parametres-server-logs.php
  2. 4 0
      core/views/pages/cms.parametres.php
  3. 81 0
      public-cms/server-logs.php

+ 9 - 0
core/views/pages/cms.parametres-server-logs.php

@@ -0,0 +1,9 @@
+<table class="table table-bordered">
+<tbody>
+    <tr>
+        <td scope="row">
+            <iframe width="100%" style="height:100vh;" src="/server-logs.php"></iframe>
+        </td>
+    </tr>
+    </tbody>
+</table>

+ 4 - 0
core/views/pages/cms.parametres.php

@@ -23,6 +23,7 @@ echo core::filAriane(array(
     <li><a class="nav-link active" href="#parametres-general">Général</a></li>
     <li><a class="nav-link" href="#parametres-restore">Backup & restauration</a></li>
     <li><a class="nav-link" href="#parametres-debug">Debug & développement</a></li>
+    <li><a class="nav-link" href="#parametres-server-logs">Logs serveur</a></li>
 </ul>
 
 <div class="tab-content">
@@ -35,6 +36,9 @@ echo core::filAriane(array(
     <div id="parametres-debug" class="tab-pane fade">
         <?php get::page("parametres-debug") ?>
     </div>
+    <div id="parametres-server-logs" class="tab-pane fade">
+        <?php get::page("parametres-server-logs") ?>
+    </div>
 </div>
 
 

+ 81 - 0
public-cms/server-logs.php

@@ -0,0 +1,81 @@
+<?php
+
+session_start();
+
+require_once "../env.inc.php";
+require_once "../access.inc.php";
+require_once "../conf.inc.php";
+
+require_once DIR_PHP_LAYOUTS . "header.php";
+require_once DIR_PHP_LAYOUTS . "cms.session.php";
+
+$logDir = SERVER_LOGS;
+$selectedLog = $_GET['log'] ?? '';
+$search = strtolower($_GET['search'] ?? '');
+$files = array_filter(scandir($logDir), fn($f) => is_file($logDir . $f));
+
+if (!$selectedLog && !empty($files)) {
+    $selectedLog = reset($files);
+}
+
+$logPath = $logDir . $selectedLog;
+$logLines = [];
+
+if (is_file($logPath) && is_readable($logPath)) {
+    $lines = array_slice(file($logPath), -200);
+    if ($search) {
+        $lines = array_filter($lines, fn($line) => stripos($line, $search) !== false);
+    }
+
+    $logLines = array_map('htmlspecialchars', array_map('trim', $lines));
+}
+?>
+
+<!DOCTYPE html>
+<html lang="fr">
+<head>
+    <meta charset="UTF-8">
+    <title>Visualiseur de logs</title>
+    <style>
+        body { font-family: monospace; background: #f4f4f4; padding: 20px; }
+        .error { color: red; }
+        .warning { color: orange; }
+        .notice { color: blue; }
+        pre { background: #fff; padding: 10px; border: 1px solid #ccc; overflow-x: auto; }
+    </style>
+    <script>
+        
+        setInterval(() => {
+            location.reload();
+        }, 5000);
+    </script>
+</head>
+<body>
+    <form method="get">
+        <label for="log">Fichier de log :</label>
+        <select name="log" onchange="this.form.submit()">
+            <?php foreach ($files as $file): ?>
+                <option value="<?= $file ?>" <?= $file === $selectedLog ? 'selected' : '' ?>><?= $file ?></option>
+            <?php endforeach; ?>
+        </select>
+        <br><br>
+        <label for="search">Filtrer par mot-clé :</label>
+        <input type="text" name="search" value="<?= htmlspecialchars($search) ?>">
+        <button type="submit">Filtrer</button>
+    </form>
+    <hr>
+    <pre>
+<?php foreach ($logLines as $line) {
+    if (stripos($line, 'error') !== false) {
+        echo '<div class="error">' . $line . '</div>';
+    } elseif (stripos($line, 'warn') !== false) {
+        echo '<div class="warning">' . $line . '</div>';
+    } elseif (stripos($line, 'notice') !== false) {
+        echo '<div class="notice">' . $line . '</div>';
+    } else {
+        echo '<div>' . $line . '</div>';
+    }
+} ?>
+    </pre>
+</body>
+</html>