<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Hi slf4j users<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I have a class that communicates (i.e. sending commands) with remote nodes. I can create multiple instances of this class, where each instance communicates with a specific host. I use a Logger object to log each command. My problem is that
 the command does not show which node it is sent to. What would be the best way to prefix the log message with an id that identifies which node is the receiver of a command? I’m trying to avoid “manually” prefixing the log message for each logger call.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The below example is a simplified version. In reality there are plenty logger calls, many different types of nodes, different types of communication. Etc.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I have tried using the MDC, but effectively, due to its static context,  I need to surround each logger call with,:<o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">              MDC.<i>put</i>(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF">"id"</span><span style="font-size:10.0pt;font-family:Consolas;color:black">,
</span><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0">id</span><span style="font-size:10.0pt;font-family:Consolas;color:black">);</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">             
</span><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0">logger</span><span style="font-size:10.0pt;font-family:Consolas;color:black">.info(command);</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">              MDC.<i>remove</i>(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF">"id"</span><span style="font-size:10.0pt;font-family:Consolas;color:black">);</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal">Which is not much different from prefixing each log message<o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">             
</span><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0">logger</span><span style="font-size:10.0pt;font-family:Consolas;color:black">.info(id + “:” + command);</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Any suggestions how to solve this?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Regards,<o:p></o:p></p>
<p class="MsoNormal">Alex<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">===========================================<o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">package</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black"> demo;</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">public</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">class</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black"> Demo {</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">      
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">public</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">static</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">void</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black"> main(String[] args) {</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">              Node n1 =
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">new</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black"> Node(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF">"host.com"</span><span style="font-size:10.0pt;font-family:Consolas;color:black">,
</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF">"id1"</span><span style="font-size:10.0pt;font-family:Consolas;color:black">);</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">              n1.send(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF">"command1"</span><span style="font-size:10.0pt;font-family:Consolas;color:black">);</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">             
</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">              Node n2 =
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">new</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black"> Node(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF">"anotherhost.com"</span><span style="font-size:10.0pt;font-family:Consolas;color:black">,
</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF">"id2"</span><span style="font-size:10.0pt;font-family:Consolas;color:black">);</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">              n2.send(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF">"command2"</span><span style="font-size:10.0pt;font-family:Consolas;color:black">);</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">       }</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">}</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal">===========================================<br>
<br>
<o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">package</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black"> demo;</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">import</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black"> org.slf4j.Logger;</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">import</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black"> org.slf4j.LoggerFactory;</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">public</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">class</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black"> Node {</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">      
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">private</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black"> Logger
</span><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0">logger</span><span style="font-size:10.0pt;font-family:Consolas;color:black"> = LoggerFactory.<i>getLogger</i>(Node.</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">class</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black">);</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">      
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">private</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black"> String
</span><u><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0">id</span></u><span style="font-size:10.0pt;font-family:Consolas;color:black">;</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">      
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">public</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black"> Node(String host, String id) {</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">             
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">this</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black">.</span><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0">id</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
 = id;</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">             
</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F5F">// create connection to host</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">       }</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">      
</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">      
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">public</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">void</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black"> send(String command){</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">             
</span><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0">logger</span><span style="font-size:10.0pt;font-family:Consolas;color:black">.info(command);</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">             
</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F5F">//send command to host</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">       }</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">}</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal">===========================================<br>
<br>
<o:p></o:p></p>
<p class="MsoNormal"><br>
Using the following logback.xml<o:p></o:p></p>
<p class="MsoNormal">========================================<o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F;background:silver;mso-highlight:silver">configuration</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black"> 
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">appender</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">name</span><span style="color:black">=</span><i><span style="color:#2A00FF">"STDOUT"</span></i>
<span style="color:#7F007F">class</span><span style="color:black">=</span><i><span style="color:#2A00FF">"ch.qos.logback.core.ConsoleAppender"</span></i><span style="color:teal">></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">   
</span><span lang="SV" style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span lang="SV" style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">encoder</span><span lang="SV" style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span lang="SV" style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="SV" style="font-size:10.0pt;font-family:Consolas;color:black">     
</span><span lang="SV" style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span lang="SV" style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">pattern</span><span lang="SV" style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span lang="SV" style="font-size:10.0pt;font-family:Consolas;color:black">%d{HH:mm:ss.SSS}
 %X{id} %<u>msg</u>%n</span><span lang="SV" style="font-size:10.0pt;font-family:Consolas;color:teal"></</span><span lang="SV" style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">pattern</span><span lang="SV" style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span lang="SV" style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="SV" style="font-size:10.0pt;font-family:Consolas;color:black">   
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"></</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">encoder</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black"> 
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"></</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">appender</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black"> 
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">root</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">level</span><span style="color:black">=</span><i><span style="color:#2A00FF">"INFO"</span></i><span style="color:teal">></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">   
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">appender-ref</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">ref</span><span style="color:black">=</span><i><span style="color:#2A00FF">"STDOUT"</span></i>
<span style="color:teal">/></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black"> 
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"></</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">root</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:teal"></</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F;background:silver;mso-highlight:silver">configuration</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><o:p></o:p></p>
</div>
</body>
</html>