kotlin Protokollierung mit Lambda-Parametern

8

In log4j2 haben wir eine praktische Funktion, die als

beschrieben wird %Vor%

mein Versuch, dies in Kotlin zu verwenden

%Vor%

welches gedruckt wird

%Vor%

Wie verwenden wir Lambda Argument Logging mit Kotlin? Oder wie sagen wir Kotlin explizit, welche Methode wir aufrufen sollen?

    
vach 11.06.2016, 18:55
quelle

2 Antworten

8

Das Problem ist, dass debug() überladen ist und eine andere Methode ein vararg-Objekt als Argument verwendet. Kotlin wählt diese Überladung und nicht die, die ein Supplier<?> als Argument verwendet, weil sie nicht weiß, dass der Lambda-Ausdruck ein Lieferant sein soll.

Geben Sie es einfach als Lieferant an:

%Vor%     
JB Nizet 11.06.2016, 20:17
quelle
1

Ich habe eine Klasse geschrieben, die viel Spaß macht ... Damit wir Dinge wie

schreiben können %Vor%

was äquivalent zu lazy lambda logging ist wie

%Vor%

Sie brauchen nicht einmal diese {} für die Parametrisierung der Zeichenfolge, und Sie haben alle ursprünglichen Logger-Methoden, da es ein Delegat ist ...

Hier ist die Klasse für jeden, der es benutzen möchte ...

%Vor%

oder wenn Sie tolle Referenzen auf die Quelle in Protokollen nutzen möchten, können Sie dies tun

%Vor%     
vach 13.06.2016 08:31
quelle

Tags und Links