Ver Mensaje Individual
  #4 (permalink)  
Antiguo 31/07/2015, 13:17
Avatar de GusGarsaky
GusGarsaky
 
Fecha de Ingreso: febrero-2015
Mensajes: 33
Antigüedad: 9 años, 8 meses
Puntos: 2
Respuesta: Ocultar cierto texto en log4j

Y por qué no solo encapsulas el logger para que primero reemplace:

Código Java:
Ver original
  1. public class Logger {
  2.    
  3.     private String message;
  4.     private Logger logger;
  5.    
  6.     public Logger(Class c) {
  7.         logger = Logger.getLogger(c.getName())
  8.     }
  9.    
  10.     public Logger filter(String mesage, char[] digitsToReplace) {
  11.         String regex = "[";
  12.         for(char c : digitsToReplace) {
  13.             regex += c;
  14.         }
  15.         regex += "]";
  16.         this.message = message.replaceAll(message, chars);
  17.  
  18.         return this;
  19.     }
  20.     public void log() {
  21.         logger.log(message);
  22.     }
  23.    
  24. }

JSP:

Código XML:
Ver original
  1. <form action="MessageServlet" method="post">
  2.     <input type="text" name="message" placeholder="Envíe su mensaje" />
  3.     <input type="submit" value="Enviar" />
  4. </form>

Servlet:

Código Java:
Ver original
  1. Logger logger = new Logger(EsteServlet.class);
  2. // message = "E$ste es #un mens&aje de pr%ueba";
  3. String message = request.getParameter("message");
  4. logger
  5.     .filter(mesage, new char[] {'$', '#', '&', '%'})
  6.     .log(); // Imprime 'Este es un mensaje de prueba'

O puedes hacerlo de frente, yo creé el método filter para modularizar, pero puedes hacer el reemplazo en el mismo método que hace el log.

PD: En el ejemplo uso el logger por defecto xD. Adaptalo a log4j.

Última edición por GusGarsaky; 31/07/2015 a las 13:26