Frage von faxfaxfax, 29

TXT Dateien mit Zeilenumbruch darstellen (PHP,HTML,Minecraft)?

Ich gruesse euch liebe Community, Ich habe aktuell vor die Minecraft Logs meines Servers auf meine Website zu stellen was auch klappt, indem ich die .log Datei in den Apache2 Ordner /var/www/html schiebe und die Datei zu index.html umbenenne jede Minute. Nun habe ich jedoch das Problem dass keine Zeilenumbrueche vorhanden sind, und das ganze daher kaum lesbar ist. Wie gehe ich da vor? Einzig in "nano" funktionieren die Zeilenumbrueche bei dem log, sonst kriegt es der Minecraft Server wohl nicht hin vernuenftig Zeilenumbrueche einzufuegen

Gibt es die Moeglichkeit das zu automatisieren und wenn dann wie, damit ein Textdokument mit Zeilenumbruechen als html oder PHP dargestellt wird? Bitte um Codebeispiele

Antwort
von shilch, 13

Bei den Apache-Virtualhosts "Symbolic links folgen" aktivieren.

<VirtualHost *:80>
<!-- Bla bla -->

DocumentRoot /var/www/html
<Directory />
Options FollowSymLinks <!-- Bla bla --> </Directory> </VirtualHost>

Dann einen Symlink zu der Log Datei erstellen.

ln -s /dein/pfad/zum/log.log /var/www/html/minecraft.log

Jetzt ist der Log auf *:80/minecraft.log erreichbar ohne PHP etc.
Wenn du den noch als HTML darstellen möchtest, legst du eine html-Datei an, in der ein JavaScript Code mittels AJAX diesen Log alle n Sekunden abfragt:

// Dateiname: log.html

<html>
  <!-- BLA -->
  <body>
    <p id="content"></p>
    <script>
      function requestLog(){
        var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
     if (this.readyState == 4 && this.status == 200) {
      document.getElementById("content").innerHTML = this.responseText.replace('\n', '<br>');
      }
  };
  xhttp.open("GET", "minecraft.log", true);
  xhttp.send(); } requestLog(); // Alle 3000ms neu laden setInterval(requestLog, 3000); </script> </body> </html>

Sollte alles so klappen, konnte es natürlich nicht testen. Bei Fragen einfach melden :)

LG shilch

Antwort
von Isendrak, 17

Wie wärs mit folgendem?

<html>
<head>
<title>Minecraft Log</title>
</head>
<body>
<pre><?php echo htmlspecialchars(file_get_contents("/pfad/zur/logdatei.log")); ?></pre>
</body>
</html>

Z.B. als viewlog.php (oder auch index.php) in /var/www/html/ speichern und den Pfad zur Logdatei anpassen.

Antwort
von mm78pr, 19

Einen Zeilenumbruch in einer Webseite wird z.B durch den Tag <br> erzeugt. Du müsstest also hinter jeder Zeile im Logfile ein <br> einfügen dann hast du im Browser auch Zeilenumbrüche.

Alternativ kannst du das ganze Log in ein Textarea Formularfeld einfügen , dann sollten dort auch Umbrüche vorhanden sein.

Kommentar von faxfaxfax ,

Die Idee klingt schonmal gut. Aber wie kriege ich es hin dass ich den Inhalt einer Textdatei in das Formularfeld kriege?

Mein Versuch hat nicht funktioniert

<textarea cols="35" rows="4">

echo file_get_contents("name_of_the_file.txt");

</textarea>

Kommentar von mm78pr ,

du kannst den php code nicht einfach so einfügen, du musst ihn auch in Tags setzen.

versuchs mal so :

<?php echo file_get_contents("name_of_the_file.txt"); ?>
Antwort
von Franz1957, 1

Setze die btr. Texte in ein HTML-Seitengerüst und stelle das Umbruchverhalten im Stylesheet durch die Eigenschaft white-space ein. Du kannst z.B. sagen:

white-space:pre;

Mehr dazu hier:

https://wiki.selfhtml.org/wiki/CSS/Eigenschaften/Textausrichtung/white-space

https://developer.mozilla.org/en/docs/Web/CSS/white-space

http://www.w3schools.com/cssref/pr_text_white-space.asp

Antwort
von Berny96, 21

Kannst du uns den Code zeigen wo du die Datei unbenennst? Oder machst du das manuell?

Kommentar von faxfaxfax ,

#!/bin/bash

cp /home/minecraft/minecraft/logs/latest.log /var/www/html/
mv /var/www/html/latest.log /var/www/html/index.html

Antwort
von LeonardM, 2

Ersetze Backslash n durch das html element br

Antwort
von kuechentiger, 15
<?php
echo nl2br(file_get_contents('datei.log'));
?>

Keine passende Antwort gefunden?

Fragen Sie die Community