Thanks now it makes sense. Thanks for your valuable input. Let me try it.

Anto.
On 5 Nov 2015 17:35, "Eric B" <[email protected]> wrote:

> Each concurrent http request will be served by seperate threads, however,
> when a request is finished, the same thread may be reused to serve
> additional requests.  This is normal in a webserver.
>
> If you set up a request listener or filter, it will be called at the start
> of every request.  In this listener, you can set an id.  Depending on the
> technology stack you are using there are different ways of accomplishing
> this.
>
> http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequestListener.html
> Ex:
> public void requestInitialized(ServletRequestEvent sre){
>    MDC.put( "userId", new UUID() );
> }
>
>
> or
> https://docs.oracle.com/javaee/6/api/javax/servlet/Filter.html
>
> public void doFilter(...){
>    MDC.put( "userId", new UUID() );
>    MDC.put( ... ... );
>    chain.doFilter(args);
> }
>
> This UUID can then be accessed in your logging statement automatically.
> In your code, you would use normal logging statements: logger.info("some
> log info").
>
> Your Appender would be configured with the particular parameter in its
> string.  Ex:
> <param name="ConversionPattern" value="RequestUUID: %X{userId} %d{ISO8601}
> %-5p %c{1} - %m%n" />
>
> Then your logger would automatically printout your log as something like:
> RequestUUID: 12afe1938107 2015-11-04 11:02:03  some.class.Name:159 - some
> log info
>
>
> Since the MDC var is overwritten at the start of every request, you can be
> assured that the thread will contain the appropriate value for that
> request.  And since all concurrent requests are handled by independent
> threads, there will be no overlapping.
>
> You should be able to find plenty of resources/tutorials for ways to use
> MDC online (stackoverflow or other).  Here's a quick primer:
>
> http://veerasundar.com/blog/2009/10/log4j-mdc-mapped-diagnostic-context-what-and-why/
>
> Hope this clarifies things a little.  Let me know if anything is still
> unclear.
>
> Thanks,
>
> Eric
>
>
>
> On Thu, Nov 5, 2015 at 10:59 AM, Anto Aravinth <
> [email protected]> wrote:
>
>> Thanks Eric, thats exactly what I was looking for.
>>
>> A noob question, so if a user hits the webpage, servlet is going to
>> create a thread for the same. Now if I do logger after setting up MDC id
>> like this:
>>
>>    logger.info (" Great")
>>
>> So technically how this can be converted or remembered per thread?
>>
>> Because imagine I did set the id as 121, and two users are hitting, which
>> is going to be altogether different threads, how does this 121 gets binded
>> to threads in this case?
>>
>> From my understanding so if a user going to access the webpage, then he
>> or she needs to "somehow" pass on this id to MDC, then I believe it works
>> as required.
>>
>> Correct me if I'm wrong.
>>
>> Anto.
>> On 5 Nov 2015 16:10, "Eric B" <[email protected]> wrote:
>>
>>> What logging platform are you using?
>>>
>>> If you are using Log4j, you can use the MappedDiagnosticContext (MDC)
>>> class
>>> https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/MDC.html.
>>> This is managed on a per-thread basis, so you can assign an ID in the MDC
>>> as part of a request listener, and any Log4j call that is made in that
>>> thread will have access to the id stored in the MDC.  This allows you to
>>> recall the id in a logging statement.
>>>
>>> All logs will still be pushed to the same appender, however you would
>>> then be able to sort and/or filter based on the ID.  If memory serves,
>>> retrieving the variable for the appender is done via the %X{VarName}.
>>>
>>> I also believe that Logback has a similar MDC functionality.
>>>
>>> Thanks,
>>>
>>> Eric
>>>
>>>
>>>
>>> On Thu, Nov 5, 2015 at 9:34 AM, ants <[email protected]>
>>> wrote:
>>>
>>>> I have few questions on this specific task; Now I have written by
>>>> monitoring
>>>> logic in the aspectj. It works so smoothly and tested in tomcat and
>>>> other
>>>> servers as well.
>>>>
>>>> I was wondering, if this can be done as well:
>>>>
>>>> 1. The logging gets started when I turn on few params on my aspectj jar,
>>>> which starts logging.
>>>> 2. So if possible, when it logs, can I make it to log according to each
>>>> thread level?
>>>>
>>>> What I was thinking over here is this, I will start my logging param in
>>>> aspectj, so imagine, when two users access the webpage in the server,
>>>> now I
>>>> want the trace should be completely isolated from each of the request. I
>>>> know HTTP doesn't have states, we can do this in sort of attaching some
>>>> "sessionID" to each trace, and then do a batch operation for getting the
>>>> result of each thread; so that trace "flow" is perfect.
>>>>
>>>> I just want to know if there are any other ways of doing this?
>>>>
>>>> Your thoughts will be really helpful to me.
>>>>
>>>>
>>>>
>>>> --
>>>> View this message in context:
>>>> http://aspectj.2085585.n4.nabble.com/How-to-weave-the-method-calls-inside-an-war-file-tp4651913p4651968.html
>>>> Sent from the AspectJ - users mailing list archive at Nabble.com.
>>>> _______________________________________________
>>>> aspectj-users mailing list
>>>> [email protected]
>>>> To change your delivery options, retrieve your password, or unsubscribe
>>>> from this list, visit
>>>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>>>
>>>
>>>
>>> _______________________________________________
>>> aspectj-users mailing list
>>> [email protected]
>>> To change your delivery options, retrieve your password, or unsubscribe
>>> from this list, visit
>>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>>
>>
>> _______________________________________________
>> aspectj-users mailing list
>> [email protected]
>> To change your delivery options, retrieve your password, or unsubscribe
>> from this list, visit
>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>
>
>
> _______________________________________________
> aspectj-users mailing list
> [email protected]
> To change your delivery options, retrieve your password, or unsubscribe
> from this list, visit
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
_______________________________________________
aspectj-users mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to