Frage

ich eine appender, dass ich nur die ersten X Zeichen will (für dieses Beispiel werden wir 5 sagen) von der Nachricht angezeigt werden soll.

ich eine Pattern verwende, aber ich kann nicht die Nachricht die Nachricht richtig zu kürzen.

Zum Beispiel, wenn meine Log-Nachricht ist

  

Der schnelle braune Fuchs

Ich will nur sehen:

  

Die q

Wenn ich diese im Pattern

  

%. 5m

ich

  

n Fuchs

da diejenigen, die letzten 5 Zeichen.

Ich habe die PattenLayout javadoc, konnte aber nichts finden. Ich weiß, das ist ein wenig seltsam, nicht die gesamte Nachricht sehen wollen, aber für diesen speziellen appender macht es Sinn. Ich mache die gesamte Nachricht in einem anderen appender anmelden. Ich möchte eine benutzerdefinierte Klasse vermeiden, schreiben, wenn möglich.

War es hilfreich?

Lösung

Trunkierung von Anfang an einer Nachricht standardmäßig erfolgt (unterscheidet sich von der printf in C, die vom Ende der Fall ist).

Die richtigen Muster sollten sein:

%.-5m

EDIT:

ich das gerade versucht, und log4j nicht wie dieses Muster. Allerdings werden die gelieferten Muster in logback gut funktionieren, wenn Sie den Schalter über machen können. Wenn Sie nicht Ihre Logging-Provider wechseln können, können Sie eine einmalige Änderung log4j machen. Das interessantes Stück Code erscheint auf den Leitungen 75-76 von org.apache.log4j.helpers.PatternConverter:

if(len > max)
  sbuf.append(s.substring(len-max));

Dies sollte lauten:

if(len > max)
  sbuf.append(s.substring(0,max));

Sie können einfach die Änderung vornehmen und das Glas für Ihren Gebrauch neu kompilieren, oder Sie können PatternConverter Unterklasse die richtigen Abschneiden auszuführen. Dies wird auch eine neue Version von Pattern erfordern, die die createPatternParser Methode enthält, die Sie in Ihrer Unterklasse außer Kraft setzen müssen Ihre neue Version von PatternConverter zu instanziiert.

Als Randbemerkung, beachten Sie die Lizenz Auswirkungen der Modifizierung Open-Source-Code in Ihrem Projekt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top