[logback-dev] [JIRA] Commented: (LBCLASSIC-185) Servlet filter which puts servlet-specific data into MDC
Ralph Goers (JIRA)
noreply-jira at qos.ch
Thu Feb 4 20:45:33 CET 2010
[ http://jira.qos.ch/browse/LBCLASSIC-185?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=11513#action_11513 ]
Ralph Goers commented on LBCLASSIC-185:
---------------------------------------
I don't have a problem with adding this to logback-examples but it isn't appropriate to add to logback-classic as there is no "correct" way to do this. For example,http://www.slf4j.org/extensions.html#event_logger shows code that works differently. In a lot of my implementations we have a hook into log in that captures most of the information in a Map that is stored in the session. Then the servlet filter just copies everything in the Map into the MDC and then adds a couple of request specific values.
Furthermore, while it is a good goal to standardize some of these names in the MDC, doing that in a ServletFilter is horrible. We have implemented a class named RequestContext just for that purpose. It has all the key name constants and provides static methods such as
public static String getRequestId() {
return MDC.get(REQUEST_ID);
}
That class becomes the glue to bind things together, not the ServletFilter.
> Servlet filter which puts servlet-specific data into MDC
> --------------------------------------------------------
>
> Key: LBCLASSIC-185
> URL: http://jira.qos.ch/browse/LBCLASSIC-185
> Project: logback-classic
> Issue Type: New Feature
> Components: Other
> Affects Versions: 0.9.18
> Reporter: Torsten Juergeleit
> Assignee: Ceki Gulcu
> Attachments: logback-test.xml, RequestLogFilter.java, RequestLogFilterTest.java
>
>
> Attached you can find a servlet filter which implements a strategy to put servlet-specific data into the SL4F MDC using the following keys:
> * {{slf4j.servlet.requestId}} - Unique ID of the single HTTP request handled by this filter
> * {{slf4j.servlet.sessionId}} - ID of the HTTP session this HTTP request is associated with or "" if no HTTP session was created yet
> * {{slf4j.servlet.contextPath}} - Web apps context path
> * {{slf4j.servlet.userName}} - Name of authenticated user or "" if no user is authenticated
> This data is removed after the request is processed.
> The following configuration parameters are supported by this filter:
> * {{maxSessionIdLength}} - limiting the HTTP session id length to a certain value, e.g. for WebLogic this could be 52 (default: -1 [unlimited])
> To use this filter add the following lines to the {{web.xml file}}:
> <code>
> <filter>
> <filter-name>RequestLogFilter</filter-name>
> <filter-class>ch.qos.logback.classic.RequestLogFilter</filter-class>
> <init-param>
> <param-name>maxSessionIdLength</param-name>
> <param-value>52</param-value>
> </init-param>
> </filter><br>
> :
> <filter-mapping>
> <filter-name>RequestLogFilter</filter-name>
> <url-pattern>/*</url-pattern>
> </filter-mapping>
> <code>
> An SLF4 Logger named {{ch.qos.logback.classic.RequestLogFilter}} is used to log the start end end of calling the filter chain. This information should go into a separate log file.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.qos.ch/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the logback-dev
mailing list