erste Loggingversuche

Otz

Bekanntes Mitglied
Hallo

ich bin gerade dabei etwas mit dem Java util Logger herumzuexperiementieren und habe hierzu noch kleine Fragen.

Ich habe ein Projekt mit mehren Klassen und möchte in diesen Klassen verscheidene Ereignisse loggen.
Wie mache ich das am besten? Ich muss den logger ja an alle klassen übergeben.

Vielen Dank
 

Otz

Bekanntes Mitglied
eine frage habe ich jetzt doch noch:

ich habe meinen logger initialisiert:
Java:
Logger logger = Logger.getLogger("MyLogger");

FileHandler fh = null;

try {
	fh = new FileHandler("..\\log.txt",true);
	} catch (SecurityException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	}
		logger.addHandler(fh);
		
	}

in der klasse in der ich ihn verwenden möchte binde ich ihn folgendermasen ein:
Java:
Logger log = Logger.getLogger("MyLogger");

Zum Testen log ich eine infomeldung

[Java]
log.info("lk-asnafjkls");
[/Java]

das funktioniert soweit auch. jedoch erstellt er mir 4 neue dateien
log.txt
log.txt.1
log.txt.1.lck
log.txt.lck

warum?
 
S

SlaterB

Gast
suche mit '1.lck Logging' und ähnlichem
java - Why my program creates empty .lck files? - Stack Overflow

lck an sich scheint nicht problematisch zu sein, sollte mit Programmende verschwinden, kann dir egal sein,

log.txt
log.txt.1
deutet vielleicht auf mehrere Programme hin, die in 'log.txt' speichern wollen und ausweichen?
überlege ob das bei dir in Frage kommt, ob du deine Programme sauber schließt usw,

zwei laufende Programme könnten theoretisch genau diese 4 Dateien bewirken
(praktisch weiß ich das alles nicht, geraten)
 
B

bone2

Gast
liegt vermutlich daran, das eventuell viele threads versuchen gleichzeitig zu schreiben und logging das versucht zu buffern, abzufangen , syncron, performant zu halten
 

Otz

Bekanntes Mitglied
ok, genau das mit lock file hab ich auch gerade gelesen.
für die anderen zwei dateien hab ich noch keine lösung...
 

Otz

Bekanntes Mitglied
liegt vermutlich daran, das eventuell viele threads versuchen gleichzeitig zu schreiben und logging das versucht zu buffern, abzufangen , syncron, performant zu halten

du hast recht, so etwas passiert gerade aber ich kann mir nicht erklären warum und wo?!

er ändert mir nicht die eigentliche logging datei sonder legt eine neue an...

und folgenden Fehler bekomme ich nach der Projektaktualisierung(F5) gezeigt:

Error copying file WEB-INF\classes\log.txt.lck: Der Prozess kann nicht auf die Datei zugreifen, da ein anderer Prozess einen Teil der Datei gesperrt hat

Wenn ich nach ca 10 sekunden erneut aktualisiere erscheint kein fehler mehr
 
Zuletzt bearbeitet:
S

SlaterB

Gast
wie gesagt ist viel eher zunächst zu untersuchen, ob nicht zwei unterschiedliche Java-Programme laufen,
bei WebServer freilich weniger wahrscheinlich..,
schon beim ersten Versuch nach Neustart des Computers ein Problem oder erst später?

mit nur einem Thread kein Problem? ist ja an sich nicht so schwer, alle Log-Wünsche eines Programms an einen Thread zu übergeben, damit nur der eine das macht
 
S

SlaterB

Gast
wo genau steht eigentlich die Zeile
> fh = new FileHandler("..\\log.txt",true);
> logger.addHandler(fh);
?

schreibe dort auch ein System.out.println("Handler") oder eine sonstige nachvollziehbare Info,
erhöhe z.B. einen statischen int-counter um 1 und gib dir diesen Wert später aus,

werden mehrere Handler im Programmverlauf/ mehrere User-Logins usw. geadded?
das klingt schon wieder nach einer guten Möglichkeit

diese Initialisierung könnte in einem
static{
}
Block stehen, dann nur einmal
 
Zuletzt bearbeitet von einem Moderator:

Otz

Bekanntes Mitglied
also ich rufe im Konstruktor die Methode initLogger() auf

[Java]
private void initLogger() {
Logger logger = Logger.getLogger("SyncManagementLogger");
FileHandler fh = null;
try {
fh = new FileHandler("(MeinPfad)\\src\\log.txt",true);
fh.setFormatter(new SimpleFormatter());
logger.addHandler(fh);
} catch (SecurityException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
[/Java]

das gleiche mit dem Hochzählen habe ich eben auch ausprobiert. Und wenn ich das Laufende Programm neustarte, dann ist ruft er erneut die Methode addLogger() auf(logisch). Das war auch mein Fehler vorhin warum ich die vielen Logfiles erhalten habe.

Jedoch stimmt da immer noch etwas nicht. Wenn er etwas ins Logfile schreibt und ich das Projekt aktualisiere kommt immernoch der TomcatFehler von vorhin.
ich habe das gefühl dass er solange braucht um einen log eintrag zu schreiben.
oder muss ich irgendwo die verbindung schließen?
 
Zuletzt bearbeitet:
S

SlaterB

Gast
ich bin mir nicht sicher, ob du mit Ausdrücken wie 'das Laufende Programm neustarte' dasselbe meinst wie ich, recht vage alles,
unter 'das Projekt aktualisieren' kann ich mir fast nicht mal etwas genaues vorstellen

edit: ok, bisschen nachgedacht, wie oft macht man das schon, zwischen Programmende und Neustart kann man durchaus bisschen warten,
gerade bei Webserver usw., dann das untige vielleicht nicht mehr nötig, dann wohl keine mehrfachen Handler


--------

mein Tipp allein zum Test:
entferne die Methode initLogger() restlos, ausradieren, Radiergummi zerstören,

den Code aber, Zeile 2 bis 12, schreibe in dieselbe Klasse ganz nach oben, dort wo Variablen deklariert werden,
und drumherum
static {
.. Code..
}

also lasse den Code nur einmal pro Programmablauf statisch ausführen
Use of a Static Block in a Class

ändert sich dadurch irgendwas zum besseren oder schlechteren?
 
Zuletzt bearbeitet von einem Moderator:

Otz

Bekanntes Mitglied
Projekt aktualisieren meine ich: du gehst in deinem Projekt Explorer auf dein Projekt und drückst "F5"

Ich habe aber das Problem jetzt gefunden. und zwar darf ich [Java]FileHandler fh = null;[/Java] nicht in der Methode machen sonder muss die Variable Global deklarieren.

Jetzt scheint es zu funktionieren. Ich Teste aber noch...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MarvinsDepression Datentypen Generics: Erste Berührungen Java Basics - Anfänger-Themen 6
L Meine erste eigene Exception Klasse Java Basics - Anfänger-Themen 10
Zwanglos Warum wird nur die erste Zeile im while Block ausgeführt? Java Basics - Anfänger-Themen 8
3 OOP erste Versuche, OOP zu verstehen. Probleme mit gettern und settern Java Basics - Anfänger-Themen 4
F nur das erste Element mit iterator ausgeben Java Basics - Anfänger-Themen 5
J Objekt erste freie Stelle zuweisen Java Basics - Anfänger-Themen 3
Zrebna Compiler-Fehler Java-Compiler wird nach 'javac' keyword-Eingabe nicht gestartet (Erste Übung) Java Basics - Anfänger-Themen 18
Textsurfer Erste Schritte Ist es der erste Schleifendurchlauf? Java Basics - Anfänger-Themen 4
V Erste Schritte Hilfe gesucht beim einstieg in Java und erste Aufgaben aus der Berufsschule Java Basics - Anfänger-Themen 9
D String erste Zahl mit LKZ auslesen lassen Java Basics - Anfänger-Themen 36
C Erste Ziffer einer Zahl Java Basics - Anfänger-Themen 46
L Erste Schritte Erste Versuche mit Server und Client Java Basics - Anfänger-Themen 7
V Klassen Bestimmen Sie die erste und letzte Position an der ein 'c' steht? Java Basics - Anfänger-Themen 3
Crazynet jTable erste Zeile mit deffinierten Werten Java Basics - Anfänger-Themen 0
B Kreuzprodukt zweier Vektoren (Erste Java Aufgabe - Hilfestellungen und Tips erwünscht) Java Basics - Anfänger-Themen 4
Tarrew Generics: Erste gemeinse Oberklasse als Rückgabewert Java Basics - Anfänger-Themen 1
N InsertionSort sortiert erste Zahl im Array nicht mit? Java Basics - Anfänger-Themen 6
I String abschneiden erste und letzte Zeichen Java Basics - Anfänger-Themen 3
U Wie bekomme ich bei der Ausgabe das erste Komma weg Java Basics - Anfänger-Themen 8
S Erste App Java Basics - Anfänger-Themen 2
johnnydoe Erste Schritte Erster Blick - erste Fragen Java Basics - Anfänger-Themen 11
Farbenfroh Erste GUI Versuche Java Basics - Anfänger-Themen 1
R Java als erste Programmiersprache 5 Auflage Java Basics - Anfänger-Themen 0
N Erste Zeile bei BufferedReader doppelt lesen? Java Basics - Anfänger-Themen 2
L Das erste Mal GridBagLayout - wie geht das? Java Basics - Anfänger-Themen 5
O Erste Versuche eine Art "EventHandler" zu bauen.. Java Basics - Anfänger-Themen 8
H Worauf bezieht sich die erste else-Anweisung Java Basics - Anfänger-Themen 9
E nur der erste (mehrerer Strings) wird ausgegeben Java Basics - Anfänger-Themen 15
C Meine erste Funktion Java Basics - Anfänger-Themen 12
A Meine erste Bibliothek erstellen Java Basics - Anfänger-Themen 24
A Mit javac zweite Datei compilieren ohne Erste erneut zu compilieren? Java Basics - Anfänger-Themen 7
P HILFE !!! erste aufgabe beim programmieren Java Basics - Anfänger-Themen 13
T Erste Programm Java Basics - Anfänger-Themen 9
T Das erste Programm starten Java Basics - Anfänger-Themen 27
L Erste Klasse Java Basics - Anfänger-Themen 12
P Textdatei auf erste Zeichenkette Prüfen... Java Basics - Anfänger-Themen 10
R Erste und zweite Stelle einer Eingabe auslesen Java Basics - Anfänger-Themen 2
M Meine erste Java Programmierung funzt nicht :-( Java Basics - Anfänger-Themen 34
U Erste Ziffer abspalten Java Basics - Anfänger-Themen 3
J Erste und letzte Zeile in txt Java Basics - Anfänger-Themen 3
J Erste OO-Aufgabe-Probleme mit Aufgabenstellung Java Basics - Anfänger-Themen 32
J Erste Gehvesuche Java Basics - Anfänger-Themen 3
C Erste GUI - Wie auswerten? Java Basics - Anfänger-Themen 3
B Das erste Programm . Java Basics - Anfänger-Themen 4
R Meine erste Klasse: Punkt Java Basics - Anfänger-Themen 3
L beim ersten compilen schon erste probleme Java Basics - Anfänger-Themen 8
G erste Schritte in Fenster und Grafik-Programmierung Java Basics - Anfänger-Themen 2
L JTabel abfragen ob es eine erste Zeile gibt? Java Basics - Anfänger-Themen 2
Q An erste Stelle in eine Queue eintragen Java Basics - Anfänger-Themen 4
C Generische Klassen, das erste Mal. Java Basics - Anfänger-Themen 8
J Neuling und erste Fragen Java Basics - Anfänger-Themen 8
R Erste Schritte,erste Class,Korrekturlesen und Verbesserungen Java Basics - Anfänger-Themen 3
T Erste Schritte (SEHR mühsam); Grafiktest Java Basics - Anfänger-Themen 5
D String, erste zeichen löschen Java Basics - Anfänger-Themen 6
J Threads: warten bis erste aktion ausgeführt wurde Java Basics - Anfänger-Themen 6
V Erste Ziffer aus einer dreistelligen "Zahl" heraus Java Basics - Anfänger-Themen 5
G Meine erste IF Abfrage Java Basics - Anfänger-Themen 11
A erste Schritte auf dem Weg eine XML-Datei zu parsen Java Basics - Anfänger-Themen 2
D Erste und letzte 3 Buchst. eines Str. in jeweils ein Array Java Basics - Anfänger-Themen 13
F Erste Schritte in Java - Wo finde ich Antworten? Referenzbib Java Basics - Anfänger-Themen 3
H Nur die erste Zeile einer Datei auslesen Java Basics - Anfänger-Themen 3
E Erste Schritte - warum läuft nur das eine? Java Basics - Anfänger-Themen 2
R Nur erste Zeile wird ausgelesen Java Basics - Anfänger-Themen 4
K Wortanzahl in erste Zeile schreiben Java Basics - Anfänger-Themen 6
W warum öffnet der nur die erste datei???? Java Basics - Anfänger-Themen 5
D erste spalte eines zweidimensionales Array sortieren ??!! Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben