Erstellen .html-Datei aus dem logfile
Ich brauche ein script, das konvertiert die log-Dateien in leicht sichtbar .html-Dateien zugänglich, die von "jedermann".
Hier ist was ich habe, so weit:
#!/bin/bash
## The purpose of this script is to create .html files from log files, with the ability to optionally GREP for certain strings
if [ "$2" == "" ];
then
echo "Usage : $0 [Source Log file] [Output HTML file] [String to grep (if applicable)]"
exit 255
fi;
LOGFILE=$1
OUTPUTFILE=$2
GREPSTRING=$3
if [ "$3" == "" ];
then
echo "Cat'ing $LOGFILE to $OUTPUTFILE"
LOGCONTENTS=`cat $LOGFILE`
else
echo "Grep'ing for $GREPSTRING in $LOGFILE"
LOGCONTENTS=`grep --color $GREPSTRING $LOGFILE | sed -e "s/^.*$/&1\n/"`
fi;
# Below is the html heading which will be appended to the final .html file
HEADING="<html><body><h1>Log output for: $LOGFILE</h1>"
# Below is the end of the html file
END="</body></html>"
# Below all the prepared variables are stitched together to the OUTPUT/LOG FILE
echo $HEADING > $OUTPUTFILE
echo $LOGCONTENTS >> $OUTPUTFILE
echo $END >> $OUTPUTFILE
# For debugging, enable the lines below
echo $LOGCONTENTS
echo "Done preparing $OUTPUTFILE"
Mein problem ist, dass die Ausgabe, egal wie viel ich Spiele mit CAT, GREP, SED etc., nicht erhalten Zeilenumbrüche. Es ist wichtig für die Ausgabe-Datei zu suchen mehr oder weniger wie bei einem normalen tail-f oder cat.
- Nur wickeln Sie es alle in
<pre>
tags, oder Ihre gewünschten CSS-Implementierung derselben. - Aber bevor etwas funktioniert, müssen Sie die doppelten Anführungszeichen die Variablen, die du
echo
. - auch alle ändern '==' zu '='
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anstatt Sie zu kopieren, die Dinge in die Variablen (und dann misquoting Sie), hier ist eine deutliche Umgestaltung.
Weil HTML nicht anzeigen, terminal-color-codes wie auch immer, ich nahm die
--color
option. Wenn Sie einen geeigneten filter für die übersetzung von HTML-tags Farbe, mit allen Mitteln werfen Sie es in.Beachten Sie auch, dass die regex standardmäßig auf eine, die passt auf alle Zeilen, wenn Sie nicht liefern eine Dritte Befehlszeile argument.
Viele Browser Rendern die lone Eröffnung
<pre>
tag als unattraktiv leere Zeile, aber die Befestigung ist kaum wesentlich. Brechen Sie aus in eine separateecho -n '<pre>'
wenn es Sie stört.3:-^}
🙂pre
hier ist, dass man ganz einfach einen Klasse tag und die Mode der log-text, wie gewünscht.Da wirst du um HTML, die Sie benötigen, zu ersetzen, Zeilenumbruch-Zeichen (mit
sed
oder was auch immer) mit<br/>
, die HTML-Zeilenumbruch. HTML ignoriert CR/LF Zeichen, die normalerweise in fließenden text.So könnten Sie
sed
als unten. Ich entfernte die1
s als Ihren Zweck nicht erklärt, aber Sie konnte Sie wieder in, wenn Sie benötigen.sed
Skript zum hinzufügen eines1
am Ende jeder Zeile ist eigentlich absichtlich, oder nützlich, aber das ist natürlich nur Spekulation. Nursed 's/$/1/'
bedeutet, dass mehr kurz und bündig, wenn es wirklich gewünscht wird.public class Log4jHTMLlayout erstreckt HTMLLayout {
protected final int BUF_SIZE = 256;
protected final int MAX_CAPACITY = 1024;
static String TRACE_PREFIX = "
";
private StringBuffer sbuf = new StringBuffer(BUF_SIZE);
public static final String LOCATION_INFO_OPTION = "LocationInfo";
}
starken text
Können Sie verwenden ccat für diesen Zweck.
Wenn Sie auf Ubuntu Folgen installieren es zuerst und konvertieren Sie eine log-Datei zu html-Datei wie unten gezeigt.
Habe ich dieses Paket zu konvertieren valgrind log in eine html-Datei, die eine schöne farbige Ausgabe.