2011-06-03 11 views
9

Estoy usando Java util Logger. De acuerdo con la documentación para el método Logger.getLogger, dice: "Encontrar o crear un registrador para un subsistema con nombre. Si ya se ha creado un registrador con el nombre dado, se devuelve. De lo contrario, se crea un nuevo registrador". ¿Todavía habría algún beneficio en llamarlo solo una vez por clase?use Logger.getLogger() cada vez que lo necesito o creo una vez por clase

Opción 1:

public class Myclass 
    static Logger logger = Logger.getLogger(Myclass.class); 

    public void method1() { 
     logger.log(...); 
    } 

    public void method2() { 
     logger.log(....); 
    } 
} 

Opción 2:

public class Myclass { 
    public void method1() { 
     Logger.getLogger(Myclass.class).log(...); 
    } 

    public void method2() { 
     Logger.getLogger(Myclass.class).log(...); 
    } 
} 

Respuesta

6

Hay dos razones no muy importantes por las que tener una única instancia estática (probablemente final) es mejor que llamar al getLogger todo el tiempo.

  1. Hace que el código sea un poco más fácil de leer (en mi opinión).
  2. Existe una muy pequeña penalización de rendimiento que paga si llama al Logger.getLogger todo el tiempo. No es algo de lo que preocuparse a menos que lo llames millones de veces en un círculo cerrado, pero está ahí.

Dicho esto, la preferencia personal es mucho más importante que cualquiera de estos motivos. La opción 1 es un enfoque común, pero si prefiere la opción 2, úsela. No va a dañar tu código.

+0

@Op La respuesta de De Cirkel resalta el problema de hacer que el registrador sea "estático"; en la mayoría de los casos está bien, pero si está escribiendo un código de biblioteca, entonces podría considerar hacerlo no '' estático'. Usted obtiene un costo por instanciación de realizar la llamada a 'Logger.getLogger', pero eso será insignificante. –

0

que sólo favorecen que veo es que las líneas de registro más cortos hacen que parezca código más claro. Pero, en la práctica, no hay diferencia en el tiempo de ejecución

Cuestiones relacionadas