Wenn Sie einen Server innerhalb von IntelliJ ausführen, können Sie die Konsolenausgabe im Fenster unten auf dem Bildschirm sehen.
Gibt es eine Möglichkeit, die Ausgabe so zu formatieren, dass IntelliJ Klassennamen erkennt und anklickbar macht? Wenn ich dann einen Klassennamen in der Serverausgabe sehe, könnte ich darauf klicken und direkt dorthin gehen.
Danke:)
Es gibt. Aus der Online-Hilfe Ссылка
entnommen%Vor%Wenn Sie Logging-Tools von Drittanbietern verwenden, möchten Sie möglicherweise die Nachrichtenausgabe, die eine Standardverknüpfung mit dem Quellcode nachahmt für Stacktrace-Linie (um . (:)). Dazu sollten Sie Ihrer log.xml ein bestimmtes Konvertierungsmuster hinzufügen Konfigurationsdatei. Zum Beispiel in einem log4j Conversion Pattern dies wäre
Allerdings ist die Ausgabe bei vollständig qualifizierten Namen, Methodennamen usw. ziemlich hässlich.
Ab IntelliJ 14 und Alternative zum Durchgraben von IntelliJ-Einstellungen ergab etwas Versuch und Irrtum, dass irgendetwas mit dem Muster
%Vor%, dem mindestens ein .
in der Konsole vorausgeht, wird in eine Dateiverknüpfung umgewandelt, wenn eine Datei mit diesem Namen bekannt ist, z. .(Whatever.java:55)
, im Arbeitsbereich ausgenommen die Bibliotheken.
Ich verwende Logback. Also zumindest in meiner logback.xml, um Links zu meinen Klassen zu bekommen, habe ich in mein Nachrichtenmuster aufgenommen
%Vor%.\( \)
- & gt; Vor dem Dateinamen muss ein Punkt stehen: Linienmuster und der Dateiname: Linienmuster eingeschlossen in Klammern. Logback erfordert in diesem Fall die Existenz von literalen Klammern. %class{0}
- & gt; Nur der Klassenname ohne ein Paket .java
- & gt; Damit entspricht es dem vollständigen Dateinamen :%line
- & gt; Ist die Protokollierungszeile des Codes Tatsächlich habe ich andere Dinge, die immer mindestens ein .
vor dem (filename:line)
enthalten, also wird es genauso gut von IntelliJ übernommen.
Sie können Ihre eigenen Ausgabefilter definieren oder Dateipfade mit getrennten Zeilennummern drucken durch einen Doppelpunkt, entweder vollständige Pfade oder Pfade relativ zu den Wurzeln der Projektquelle.
Der benutzerdefinierte Ausgabefilter kann die folgenden Variablen verwenden: $FILE_PATH$
, $LINE$
.
Damit Dinge wirklich funktionieren, müssen Sie die vollständige Stacktrace-Notation beachten. Wie es nicht genug ist, einfach einen Punkt "." vor den Klammern. Wenn Sie zwei Klassen mit demselben Namen aber unterschiedlichen Paketen haben, wählt IntelliJ die erste, die es findet. Um dies auch in diesem Fall KORREKT zu erreichen, müssen Sie
schreibenvollqualifizierterKlassenname + "." + Methodenname + "(" + einfacherKlassenname + ".java:" + Linenummer + ")"
Wenn Sie nicht wissen, dass die Zeilennummer mit ": 1" für mich funktioniert hat
Tags und Links intellij-idea