Bereiche
News
Rewind
Tipps & Berichte
Forum
Galerie
Journals
Events
Umfragen
Themenwoche
Kleinanzeigen
Interaktiv
Anmelden
Registrierung
Zu allen empfangenen Nachrichten
Suche...
Zur erweiterten Suche
Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum
>
Entwickler
>
Log-File in einer Tabelle darstellen
Log-File in einer Tabelle darstellen
Bleistift
13.01.08
17:56
Ich möchte ein Logfile in einer Tabelle darstellen. Die Console(.app) macht ja ziemlich genau das. Gibt es da evt. einen Code den ich nutzen kann? Oder ein kleiner Code-Schnipsel? Vielleicht mit Regular Expressions?
Hilfreich?
0
Kommentare
Resistance
15.01.08
10:31
Willst du wirklich eine Tabelle?
Logfiles neigen dazu, Informationen völlig unstrukturiert dazustellen, es ist meistens ziemlich schwer, das in eine Tabelle zu pressen (von den Standardinformationen wie Datum, Uhrzeit etc. pp.) mal abgesehen.
Du kannst entweder ein Textfield dafür nutzen (völlig unstrukturiert) oder du mußt dich mit den TableViews auseinander setzen (das würde bedeuten, daß dein Programm dann eine Art "Datenquelle" für die TableView zur Verfügung stellt, in der dann nach und nach die Felder abgefragt werden, so ala gibt mir feld 1 aus Zeile 2, gib mir feld 4 aus Zeile 3 usw.) - das ist nicht besonders schwer, aber lästig, da die Informationen VORHER vorliegen müssen, du mußt also selber vorher die Daten strukturieren (zB. mußt du zu beginn wissen, wieviele Zeilen angezeigt werden sollen).
Wenn du sie einfach in ein Textfield reinklaschst, kann man sie auch sehen (zugegeben: bei großen Logfiles ziemlich unkomfortabel, aber große Logfiles gilt es ja sowieso zu vermeiden
)
Hilfreich?
0
stv
15.01.08
16:42
Ich treffe mal zwei Annahmen, da du in der Frage nicht darauf eingehst:
1. Die einzelnen "Zeilen" des Logfiles sind durch einen Linebreak-Character (\\n) voneinander separiert.
2. Du willst das mit Obj-C und Cocoa machen.
Die Richtung die ich einschlagen würde, wäre eine Instanzveriable als NSMutableArray zu deklarieren und zur Laufzeit zu dieser die NSString-Objekte, welche durch das Zerpflücken des Logiles an der Stelle \\n entstehen hinzuzufügen.
Das Array dient als dataSource für die NSTableView. Jetzt kannst du entweder den Glue-Code selbst schreiben (also die Delegate-Methoden implementieren) oder einfach Bindings verwenden.
Nur mal so als spontanen Ansatz...
Gruß,
Stefan
Hilfreich?
0
Bleistift
15.01.08
22:08
1. Die einzelnen "Zeilen" des Logfiles sind durch einen Linebreak-Character (\\\\n) voneinander separiert.
2. Du willst das mit Obj-C und Cocoa machen.
Jap, beides korrekt
Aber wie kann ich das Log-File bzw. dessen Informationen in die einzelnen Spalten aufteilen?
Hilfreich?
0
stv
16.01.08
13:16
Hast du mal ein Beispiel wie das Logfile aussieht? Wahrscheinlich wirst du hier tatsächlich entweder mit RegExen oder NSRange weiterkommen, aber ohne das Ding gesehen zu haben kann ich natürlich nix vorschlagen
Hilfreich?
0
Bleistift
18.01.08
10:10
Jap, kann ich:
Fri Jan 18 2008 10:08:49.60 CET -Allw- local:0
192.168.1.1:80 (http) tcp4 'Safari (179)'
Es handelt sich um das Programm "PeerGuardian".
Hilfreich?
0
stv
18.01.08
14:41
Da der Aufbau der Zeile ja immer gleich sein sollte, fallen mir spontan zwei Möglichkeiten ein:
1. Du nimmst einen NSScanner wie im String Programming Guide beschrieben: http://developer.apple.com/documentation/Cocoa/Conceptual/Strings/Articles/Scanners.html#//apple_ref/doc/uid/20000147
2. Du ermittelst die Position des bekannten Chars, an welchem der String getrennt und in die einzelnen Teile für die Spalten zerlegt werden soll mittels NSRange:
- (NSArray *) arrayFromLogString:(NSString *)logString
{
NSMutableArray *tmpArray = [NSMutableArray array];
if([logString rangeOfString:@"->"].length > 0) {
[tmpArray addObject:[logString substringToIndex:[logString rangeOfString:@"->"].location]];
[tmpArray addObject:[logString substringFromIndex:[logString rangeOfString:@"->"].location]];
}
return tmpArray;
}
Diese schnell zusammengeworfene (sollte laufen, aber ohne Gewähr!) Methode nimmt eine Zeile entgegen und trennt diese an dem spezifizierten Separator (in dem Fall hab ich mal das
genommen). Zurück bekommst du ein Array mit dem Teil vor dem Separator in der ersten Zeile und dem Teil danach in der zweiten. Das läßt sich noch generalisieren (z.B. durch Übergabe des Trennzeichens) und erweitern, so dass im Idealfall diese Methode schon für deine Zwecke reichen könnte.
Hilfreich?
0
Bleistift
18.01.08
19:40
Danke! Ich werde das morgen mal probieren
Hilfreich?
0
Kommentieren
Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.
Apple-Leak spricht vom "iPad Air M3"
Verwunderung über Upgrade-Preise: Zwei Mac Mini...
Kurz: Apple weitet Rückgabefristen deutlich aus...
Neuer Mac: Vorbereitung für den Umzug vom alten...
Gurman zum Release des neuen Apple TV, HomePods...
Vor 18 Jahren: iPhone, Apple TV und "Apple Inc."
iOS 18.3 mit Hinweisen auf neue Apple-Hardware
Baldige Überarbeitung: Welche Macs, iPhones und...