Question

While working on a web (JEE based) application I saw some different ways people have instantiated loggers in different classes. First way is classic way like,

private static final Logger logger = LoggerFactory.getLogger(AbstractPersistenceObjectDAO.class);

but as JEE applications are CDI enabled in some managed classes it was injected like

@Inject
private Logger logger;

is there any advantage if using logger with CDI, in terms of performance (time or memory)? Are there any downsides of any of these approaches? While @inject can only be used in managed environments, does it offer any advantage over other?

Was it helpful?

Solution

techtrainer,

  • Use injection sparingly and only when needed
  • In my opinion there's no point in injecting logger (I use static)
  • Both costs should be negligible unless many many objects are created

Reference:

What's the overhead of creating a SLF4J loggers in static vs. non-static contexts

Licensed under: CC-BY-SA with attribution
scroll top