
Ich entwickle eine Rails- und Scala-Anwendung, die MySQL, Redis, MongoDB und Memcached unter OSX verwendet.
Es ist ziemlich nervig, immer 6 Terminals offen zu haben und dort die Protokolle durchzugehen, also habe ich mich gefragt, ob es ein Tool gibt, mit dem ich die Programme starten und dann die Standardausgabe/das Protokoll in den Socket (oder das Protokolldatei-Ende, wenn das die einzige Ausgabe ist) übertragen und mit Präfixen für den Ursprung aggregieren kann.
[MySQL - 00pid00] SELECT .......
[Rails Server - 11pid11] GET request to /foo
...
Im Idealfall kann ich auch sortieren und filtern wieApache-Kettensägeermöglicht log4j und das Erstellen meiner eigenen Felder basierend auf regulären Ausdrücken (d. h. wenn ein Fehler auftritt, zeigen Sie mir ein Feld, das nur die URL des Fehlers und die HTTP-Antwort/Datei + Zeile anzeigt, die den Fehler verursacht hat).
(Ich kenne sed, awk, grep und Co., aber eine GUI ist viel einfacher zu verwenden und der Einstieg ist viel schneller)
Antwort1
Wenn Sie jedes dieser Systeme so einrichten können, dass es in Dateien protokolliert, können Sie diese Protokolle von Chainsaw aus verfolgen und die Protokolleinträge in einer einzigen Tabelle zusammenfassen. So geht's:
- Laden Sie den neuesten Entwickler-Snapshot von Chainsaw herunter:http://people.apache.org/~sdeboy
- Wählen Sie die Registerkarte „Willkommen“ und klicken Sie oben auf der Registerkarte auf die Schaltfläche „Beispiel-Empfängerkonfiguration anzeigen“ und kopieren Sie die Konfiguration. – Erstellen Sie mehrere VFSLogFilePatternReceiver-Einträge, einen für jede Protokolldatei, die Sie verfolgen möchten.
- Das einfachste Protokollformat ist MESSAGE. Dabei wird jede Protokollzeile im Feld MESSAGE in Chainsaw in einer Zeile platziert.
- Sie können Chainsaw die Protokollzeile mithilfe der im LogFilePatternReceiver-Javadoc definierten Felder analysieren lassen:http://logging.apache.org/log4j/companions/receivers/apidocs/org/apache/log4j/varia/LogFilePatternReceiver.html
- Beachten Sie, dass Sie (LF) zur Darstellung eines Zeilenvorschubs verwenden können, wenn Ihr Protokollformat mehrere Zeilen umfasst (noch nicht in diesem JavaDoc).
- Sobald alle Ihre Protokolldateien in Chainsaw als separate Registerkarten angezeigt werden, können Sie alle Ereignisse aus allen Registerkarten in einer neuen Registerkarte sammeln, indem Sie einen Ausdruck definieren, der den Ereignissen entspricht, die Sie sehen möchten (Dokumentation zur Ausdruckssyntax finden Sie in der Hilfe/im Tutorial).
- Tipp: Löschen und pausieren Sie die Registerkarte „Chainsaw-Log“ (aus dem Menü „Aktuelle Registerkarte“), um sicherzustellen, dass die Chainsaw-Log-Nachrichten nicht mit Ihren vermischt werden.
- Wählen Sie „Ansicht, Registerkarte aus Ausdruck erstellen“
- Der einfachste Ausdruck, der auf alle Einträge in allen Registerkarten zutrifft, ist MSG EXISTS
- Es wird eine neue Registerkarte mit Ihrem Ausdruck erstellt und mit allen vorhandenen Ereignissen gefüllt, die dem Ausdruck entsprechen.
- Wenn neue Ereignisse eintreffen, die dem Ausdruck entsprechen, werden sie sowohl der ursprünglichen Registerkarte als auch der Registerkarte „Ausdruck“ hinzugefügt.
Antwort2
Sie können dem Standard Ihre eigenen Logdateien hinzufügen./Applications/Utilities/Console.app