Gday all,
This would seem to imply that to log in static methods we should issue a LoggerFactory.getLogger() on every invocation and thus be able to log into the correct context. Is this accurate, assuming it's not an often used method.
Cheers,
Will

At 06:12 AM 14/06/2006, you wrote:


At 12:30 PM 6/13/2006, Konstantinos Karadamoglou wrote:
Hello all,

Which is the best practice of declaring Loggers? For instance, should they be static, private, final? and why?

I recommend that loggers members be declared as instance variables instead of static.

Static logger members cost a single variable reference for all instances of the class whereas an instance logger member will cost a variable reference for every instance of the class. For simple classes instantiated thousands of times there might be a noticeable difference.

However, more recent logging systems, e.g log4j or logback, support a distinct logger context for each application running in the application server. Thus, even if a single copy of log4j.jar or logback-classic.jar is deployed in the server, the logging system will be able to differentiate between applications and offer a distinct logging environment for each application.

More specifically, each time a logger is retrieved by invoking LoggerFactory.getLogger() method, the underlying logging system will return an instance appropriate for the current application. Please note that within the same application retrieving a logger by a given name will always return the same logger.

If the logger is static, then it will only be retrieved once when the hosting class is loaded into memory. If the hosting class is used in only in one application, there is not much to be concerned about. However, if the hosting class is shared between several applications, then all instances of the shared class will log into the context of the application which happened to fist load the shared class into memory.

In summary, except for classes with few members and instantiated very frequently, logger members should be instance variables.

I hope this helps,

--
Ceki Gülcü
http://ceki.blogspot.com/

_______________________________________________
user mailing list
[email protected]
http://slf4j.org/mailman/listinfo/user




_______________________________________________
user mailing list
[email protected]
http://slf4j.org/mailman/listinfo/user

Reply via email to