Se puede acceder a la clase desde varios subprocesos. Debe ser logger en este caso también ser definitiva y estática? Gracias.¿Debería ser el registrador siempre final y estático?
Respuesta
Todos los principales paquetes de registro de java (java.util.logging
, log4j
, etc.) están sincronizados y son seguros para la ejecución de subprocesos. El patrón estándar de un registrador private final static
por clase está bien, incluso si se llama a la clase desde varios subprocesos.
Sí, el registrador debe ser estático y definitivo. También preferiblemente privado. Solo debe haber una instancia de registrador por clase y, a menos que cambie dinámicamente la preferencia de registro, es mejor que sea definitiva.
El registrador es seguro para subprocesos y no tiene que preocuparse por el enhebrado.
Al hacer que el registrador final y/o estático no afecte de ninguna manera a la seguridad del hilo del uso del registrador. Si la instancia del registrador se está utilizando desde varios subprocesos, asegúrese de estar utilizando un registrador seguro para subprocesos.
En general, el registrador debe ser privado estático final, pero no suponga que esto lo hace seguro para subprocesos. Los marcos de trabajo de registro más comunes son seguros para subprocesos, por lo que si está utilizando uno de estos, debería estar bien.
- 1. ¿Debería declararse un "Registrador final estático" en MAYÚSCULAS?
- 2. ¿Cuándo debería ser un método estático?
- 3. registrador Singleton, registrador estático, registrador de fábrica ... ¿cómo iniciar sesión?
- 4. ¿Qué funcionalidad debería ser siempre de terceros?
- 5. ¿Debería el símbolo de porcentaje (%) ser siempre escapado de HTML?
- 6. ¿Debería declararse un registrador Log4J como transitorio?
- 7. ¿Es eficiente obtener un registrador de un inicializador de variable final estático?
- 8. ¿Debería siempre usar GL_CULL_FACE?
- 9. ¿Debería el verificador estático de contratos de código ser capaz de verificar el límite aritmético?
- 10. WCF ¿cuál debería ser el EndpointConfigurationName?
- 11. ¿Cuán extensible debería ser realmente el código?
- 12. ¿por qué el delegado debe ser estático?
- 13. ¿Qué debería ser hadoop.tmp.dir?
- 14. SLF4j - pregunta de logback: ¿cuántos objetos de registrador debería crear?
- 15. ¿Debería el mailto ser utilizado en HTML5?
- 16. ¿Debería el patrón de estrategia ser apátrida?
- 17. ¿Debería llamar siempre a Page.IsValid?
- 18. ¿Dónde se define un registrador estático de toda la aplicación?
- 19. ¿Cómo debería ser mi modelo?
- 20. En caso de que el registrador sea privado estático o no
- 21. memcpy(), ¿cuál debería ser el valor del parámetro de tamaño?
- 22. ¿Cómo puedo resolver "método xxx no estático: xxx() no debería ser llamado estáticamente en PHP 5.4
- 23. Scala: final estático público en una clase
- 24. ¿Debería mi clase de sesión ser estática?
- 25. ¿Debería ser "Arrange-Assert-Act-Assert"?
- 26. ¿No deberían los patrones "estáticos" ser siempre estáticos?
- 27. ¿Cómo agregar campo final estático con inicializador usando ASM?
- 28. log4net: Creando un registrador dinámicamente, ¿debería preocuparme por algo?
- 29. El problema con el campo estático y Singleton
- 30. Python y Unicode: ¿Cómo debería ser todo lo Unicode
Un ejemplo de código podría ayudar a aclarar la pregunta. – Peter
Consulte también esta publicación para obtener más información sobre esta práctica recomendada http://stackoverflow.com/questions/6653520/why-do-we-declare-loggers-static-final –
Puede deshacerse de esta variable si utiliza [jcabi-log] (http://www.jcabi.com/jcabi-log/), un contenedor estático alrededor de slf4j – yegor256