I have some webservices in my application and i want to log them to diferent files, based on the webservice name. For that i am creating loggers with
myLogger = Logger.getLogger(logKey);
I am wondering if i should cache these loggers to avoid creating them for every call, or can i ignore the overhead.
-
Loggers are already cached by log4j using the default log repository (
Hierarchy). In other words, it's just a hashtable lookup.However, in my experience you tend to make the logger static, so it only ends up being called once per class anyway.
willcodejavaforfood : +1 but it is more fun voting up people with less reputationNicolas : Wouldn't making the logger static prevent you from changing its level at runtime (through an MBean for example)? In theory not, but I thought that was the case with java logging.Jon Skeet : I don't *think* so. I think the level stuff is checked dynamically, rather than being frozen in the constructed logger. -
This method Logger.getLogger(logKey) looks in logger cache for a logger with the name passed in logKey. If it doesn't exist it creates one. First call for a logger name, a Logger will be created but later calls will get it from cache so you don't need to handle this in your code.
0 comments:
Post a Comment