LogDatei static Methoden

famco

Aktives Mitglied
Hallo,
als Umsteiger auf Java habe ich einige Verständnisprobleme. Es wäre nett, wenn mir jemand die richtige Richtung zeigen könnte.

Ich habe vor, mir ein package mit nützlichen Klassen zu erstellen. Konkret habe ich eine Klasse LogDatei geschrieben, die einen Konstruktor hat, mit dem eine Logdatei angelegt wird (sofern nicht vorhanden).
Mit der Methode loggen kann ich (über ein FileWriter-Objekt) beliebige Strings in die LogDatei schreiben.

Meine Plan war jetzt, ein globales LogDatei-Objekt zu erzeugen, über welches ich aus verschiedensten Methoden des Programms, Einträge in die Logdatei machen kann. Und genau an dieser Stelle habe ich keine Idee, wie ich das machen kann, ohne an alle Methoden das LogDatei-Objekt, welches ich in der statischen Main-Methode erzeugt habe, zu übergeben ...

Ich hoffe, das war halbwegs verständlich ...

Danke im voraus
famco
 
Zuletzt bearbeitet von einem Moderator:
Alternativ, du kannst einmal am Anfang deiner Anwendung die folgenden Methoden aufrufen

Java:
FileOutputStream myLogFile = new FileOutputStream("logfile.txt");
System.setOut (myLogFile)

und dann alle System.out.print's weden automatisch in der Datei logfile.txt geschrieben werden.
 
Hi,
ein Ansatz wäre:
die LogClass mit allen Methoden static machen

in einer beliebigen anderen Klasse nur noch die LogClass bei den imports einfügen (falls anderes Package)

und dann sowas:
LocClass.newLogEntry("blabla").

Gibt bestimmt schönere alternativen 😉
Gruß
 
Meine Plan war jetzt, ein globales LogDatei-Objekt zu erzeugen, über welches ich aus verschiedensten Methoden des Programms, Einträge in die Logdatei machen kann. Und genau an dieser Stelle habe ich keine Idee, wie ich das machen kann, ohne an alle Methoden das LogDatei-Objekt, welches ich in der statischen Main-Methode erzeugt habe, zu übergeben ...
Einfach kein Objekt erzeugen, dann muss man nichts übergeben ;-)
Die Methoden solcher Hilfsklassen, die von "überall" aufgerufen werden sollen, macht man static.
Ein Konstruktor für so eine Klasse ist unnötig. Da in Deinem Fall allerdings eine Datei erzeugt werden soll, benötigt die Klasse einen statischen "Konstruktor":
Java:
static {
      //hier Datei erzeugen und die Referenz der statischen Variablen übergeben
}

Hinweis: Für Logging gibt's bereits Frameworks z.B. log4j
 
ok, das mit der LogDatei-Klasse ist ja auch nur ein Beispiel.
Wie sollte denn in Java generell das "Hauptprogramm" aufgebaut sein.
Bisher hatte ich meine Hauptklasse mit der statischen Main-Methode.
Darin habe ich mir einige Objektvariablen deklariert und entsprechend
meiner Klasse Exemplare erzeugt und verwendet.
Ist das grundsätzlich so ok, oder eher unglücklich ... ???

Danke
famco
 
Hi,
das hängt immer von der größe des Programms ab.
Bei kleineren Programmen nimmt man meistens nur die main-Methode, lagert vielleicht mal 2-3 Methoden aus oder schreibt sich 2-3 Klassen dazu und ist glücklich ^^
Bei größeren Applikationen (insbesondere mit Grafik) startet die main-methode normalerweise nur noch die nötigen Vorgänge.
Am besten kann man sowas immer direkt am Code oder am Projektaufbau bzw den projektanforderungen abschätzen.
Gruß
 
Hallo FirePhoenix,

was meinst Du mit "starten der nötigen Vorgänge" ?
Vielleicht: diverse Threads starten? Oder Objekte instanziieren und Startmethoden aufrufen ??

Danke
famco
 
Hi,
je nachdem, bei einer Gui anwendung die über den EDT läuft könnte das starten z.b. als erzeugen des JFrames+setVisible repräsentiert werden 🙂
Bei anderen Anwendungen wieder anders ^^ je nachdem ob man Multithreading, MVC etc benutzt
Gruß
 

Neue Themen


Zurück
Oben