<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt"><div>Hello all,</div><div><br></div><div>I would like to change the way messages are logged in my current application. Now, all the loggers are defined in the "classic" way: a logger per class, that is named according to the owning class.</div><div><br></div><div>For the features/functions/mechanisms that span their execution among multiple classes, it's more convenient to organize the log per those specific roles that they play in the application. Let me give you an example.</div><div>* Class: <span class="tab"></span><span class="tab"></span>ServerEndpoint having 2 methods: <span class="tab">deserialize()</span><span class="tab"></span><span class="tab"></span>, executeLogic().</div><div>* Class: ServerLogicUnit having 2 similar methods: deserialize(), executeLogic().</div><div><br></div><div>I'd like both methods:
 ServerEndpoin.deserialize() and ServerLogicUnit.deserialize() (+ subclasses eventually) to use a logger, let's say: "server.processing.deserialization". In a similar way, ServerEndpoint.executeLogic() and ServerLogicUnit.executeLogic() would use "server.processing.execution".</div><div><br></div><div>I see 2 solutions for this. <br></div><div>1) Have loggers that are registered like this: <br></div><div><br></div><div>static public Logger loggerSerialization = LoggerFactory.getLogger("server.processing.deserialization"); </div><div>static public Logger loggerExecution = LoggerFactory.getLogger("server.processing.execution"); <br></div><div><br></div><div>This loggers are stored somewhere kind of globally, and different pieces of code, from various classes use them for logging. </div><div><br></div><div>2) I guess a solution can be found, even if the loggers are stored per class, using markers or MDC + some custom filtering logic.
 <br></div><div><br></div><div>My question: what are the best practices in this area? Are there possible issues if I'll go for "Solution 1"?</div><div><br></div><div>I'm realizing that I instantiate one logger per class somehow by reflex, not as result of a need. When I need to activate the log in a production application, to see what happens with a certain mechanism of the application, I end up in enabling debug or trace for the whole app. This shows me what I need, but it pollutes my log terribly.</div><div><br></div><div>Thank you in advance for you feedback.</div><div><br></div><div>Best regards,</div><div>Cristian.<br></div></div></body></html>