wan loggt man zu viel

Status
Nicht offen für weitere Antworten.
L

logger

Gast
im moment logge ich fast jede zeile mit trace, klar schön zum gucken im log file, kann man ja später auf warn oder error erhöhen um, sich das nicht angucken zu müssen
Code:
public void setPw(String pw) {
		logger.trace("enter setPW @" + Login.class.getName()); //$NON-NLS-1$
		this.pw = pw;
	}
aber sind solche kleinigkeiten wirklich sinnvoll?

was loggt ihr so? nur catch?
 
T

tuxedo

Gast
Ich logge (mit java.util.logging) in mehreren Log-Levels:

FINEST, FINER, FINE, CONFIG, INFO, WARNING, SEVERE

z.B.

in WARNING:
- Fehler und Exceptions

in FINE:
- Je nach größe einer Methode: Beginn und Ende
- Methoden-Argumente
- Methodenergebnisse

in FINER:
- Zwischenergebnisse in Berechungen
- Daten I/O (Netzwerk, DB, Filesystem, ...)

in FINEST:
- Inhalte von Arrays, ByteBuffern und so Zeugs
- Größen von Listen, Arrays

Natürlich nicht strickt nach Plan, sondern nur da, wo's auch Sinn macht das im Log zu erfahren. Meist taucht irgendwo ein Bug auf, den ich dann mittels Debuggen und zusätzlichen Log-Outputs finde. Früher hab ich Sysout's verwendet, heute sinds Log-Outputs die dann eben drin bleiben.

Was ich bisher auch nicht berücksichtigt habe, aber seit meinem letzten Projekt nun tue:

Code:
logger.fine("entered value="+value);

hab ich nun abgeändert zu:

Code:
if (logger.isLoggable(Level.FINE)) {
logger.fine("entered value="+value);
}

Grund: Die String-Konkatenation bremst das ganze. Die IF-Abfrage verhindert unnötiges konkatenieren wenn nicht das passende Log-Level eingestellt ist. Kann man sicher noch hübscher lösen. Wollte nur das Prinzip aufzeigen.

Zu viel loggen tut man in meinen Augen nur dann, wenn es unerhebliche Informationen sind die man zum Suchen von Fehler eh nicht braucht.

- Alex
 

FArt

Top Contributor
logger hat gesagt.:
aber sind solche kleinigkeiten wirklich sinnvoll?

Ja, sonst gäbe es das Loglevel nicht. Gerade das trace-Level ist erst später dazugekommen, weil man es wirklich sinnvoll einsetzen kann.

Eigentlich sind sie sehr sprechend (z.B. log4j):
trace: Schritt für Schritt nachvollziehbar
debug: genug Informationen um Fehler zu finden
info: Grobe Satusmeldungen (informeller Charakter)
warn: der Entwickler kann nicht entscheiden ob das ein Fehler ist
error: unerwarteter Fehler... lol
fatal: yo... wirklich schlimm halt...

Tipp: bei den Loglevels trace, debug und info immer die Abfrage auf dem Logger machen, ob in diesem Level geloggt werden soll... sonst handelst du dir schnell ein Performanceproblem ein.
 
L

logger

Gast
ist ein if wirklich so viel effektiver?
als einfach das ganze hinzufügen, hab ka wie dass log system arbeitet, ich stell mir da einen eintrag in einer liste vor

ich werde es aber lieber einbauen... wenn es empfohlen wird
 

tfa

Top Contributor
logger hat gesagt.:
ist ein if wirklich so viel effektiver?
Das Argument der trace-Methode wird jedes mal ausgewertet, egal ob nun geloggt wird oder nicht.
Und wenn dort Methodenaufrufe und String-Konkatenationen stehen, läppert sich das irgendwann.

Wenn du wirklich soviel loggen willst (jeden Methodenaufruf (?)), solltest du das lieber mit
aspektorientierter Programmierung machen. So hälst du deinen Quelltest sauberer.
 
L

logger

Gast
tfa hat gesagt.:
logger hat gesagt.:
ist ein if wirklich so viel effektiver?
Das Argument der trace-Methode wird jedes mal ausgewertet, egal ob nun geloggt wird oder nicht.
Und wenn dort Methodenaufrufe und String-Konkatenationen stehen, läppert sich das irgendwann.

Wenn du wirklich soviel loggen willst (jeden Methodenaufruf (?)), solltest du das lieber mit
aspektorientierter Programmierung machen. So hälst du deinen Quelltest sauberer.

ja, ein before und after wäre schon cool, aber ich will nicht aspectj nutzen, ist mir zu weit weg vom standard

und spring ist mir jetzt zu fett, nur für nen paar aspekte

was mache ich da am besten?
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben