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
