Protokollierung mit mehreren Parametern

8

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?

    
Gash87 08.04.2013, 13:39
quelle

2 Antworten

13

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%     
Rohit 08.04.2013 13:56
quelle
9

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

    
Ben Steinert 28.06.2016 10:14
quelle

Tags und Links