2011-04-11 9 views
3

maintenant pour un message de journal particulier pour le signe% p, je vais obtenir soit le débogage ou une erreur ou un avertissement. quelqu'un peut-il me dire comment obtenir seulement les trois premières lettres. par exemple. La guerre pour alertelog4j affichant les messages de journal en utilisant% p

+0

est-ce que% .3p fonctionne? – sbridges

+0

Oui, mais il enregistre les trois dernières lettres. par exemple ING pour l'avertissement – user696266

+0

Par défaut,% .3p tronque depuis le début. quelqu'un peut-il me dire comment tronquer à partir de la fin – user696266

Répondre

1

Le code qui exécute la sous-chaîne est en org.apache.log4j.helpers.PatternConverter classe, méthode format:

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

Si vous souhaitez imprimer WAR, vous devez sous-classe PatternConverter changer de classe de la ligne de sous-chaîne en format méthode pour quelque chose comme ceci:

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

Ensuite, vous devez également écrire une nouvelle version de la méthode PatternLayout#createPatternParser, qui doit instancier nouvelle version de PatternConverter.

Espérons que cela aide.

+0

C'est le cas. Merci :) – user696266

0

En log4j 2.x, vous pouvez tronquer de la fin:

troncature de la fin est possible en ajoutant un caractère moins juste après la période. Dans ce cas, si la largeur de champ maximale est huit et que l'élément de données est long de dix caractères, les deux derniers caractères de l'élément de données sont supprimés.

Lien: https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout

Donc dans ce cas, %.-3p devrait donner WAR au lieu de WARNING.

Questions connexes