Ich arbeite gerade an einem Programm, bei dem ich alle Ausgaben in eine Protokolldatei schreiben muss.
Ich muss eine Protokollmethode schreiben, die eine Ausgabe mit einer Ebene, einer Nachricht, einem Objektwert, einer anderen Nachricht, einem ganzzahligen Wert, einer anderen Nachricht und einem anderen ganzzahligen Wert in der angegebenen Reihenfolge ergeben soll. Ich kann keine Log-Methode finden, die das tut. Ich verwende Java.util.logging
. Ist das möglich?
Ich nehme an, dass Sie das Protokollformat im folgenden Format benötigen FINE, Message1, object.GetValue (), Message2,1, Message3,2
Sie müssen ein Ausgabenachrichtenformat erstellen
%Vor%Nun müssen Sie einen benutzerdefinierten Formatierer erstellen, der die Formatter-Klasse erweitert
%Vor%Stellen Sie nun den neu erstellten Formatierer ein
%Vor%Es ist ein recht altes Thema, jedenfalls meine zwei Cent, denn ich bevorzuge auch java.util.logging.Logger 'in meinen Projekten wo ausreichend.
Lambdas machen diese Formatiererweiterung für mehrere benutzerdefinierte Parameter mehr oder weniger überflüssig, es sei denn, Sie profitieren von ihrer anwendungsweiten Wiederverwendung. In (meinen) einfachen Szenarien werden Protokollnachrichten auf den Codeabschnitt zugeschnitten, in den sie eingefügt werden. Daher ist String.format()
normalerweise viel einfacher und flexibler.
Vor Java 8 und lambdas war Formatter
die einzige Möglichkeit, die Nachrichtenkonstruktion zu verschieben. Die einzige Alternative bestand darin, die Nachricht so zu erstellen, dass sie sich im Voraus anmeldet, bevor die loggable
Prüfung basierend auf dem Level erfolgte.
Mit Java 8 lambdas Die Formatierung kann auf nach dem loggable
check verschoben werden, aber immer noch mit Zugriff auf den ursprünglichen Methodenkontext. Der einzige kleine Nachteil ist, dass alle Felder, auf die zugegriffen wird, aufgrund der Lambda-Einschränkungen endgültig sein müssen.
Hier ein ziemlich einfaches Snippet:
%Vor%Hoffentlich hilft das einige von euch, die auch die eingebaute Protokollierung benutzen wollen: -)
Prost Ben
Tags und Links java java.util.logging