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?
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%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%