svn commit: r2121 - in logback/trunk: logback-access/src/main/java/ch/qos/logback/access logback-access/src/main/java/ch/qos/logback/access/jetty logback-classic/src/main/java/ch/qos/logback/classic logback-site/src/site/pages logback-site/src/site/pages/manual logback-site/src/site/resources/images logback-site/src/site/resources/manual/images/chapter3

Author: ceki Date: Fri Jan 9 18:31:17 2009 New Revision: 2121 Added: logback/trunk/logback-site/src/site/resources/images/lbAccessStatus.jpg (contents, props changed) logback/trunk/logback-site/src/site/resources/manual/images/chapter3/lbClassicStatus.jpg (contents, props changed) Modified: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/ViewStatusMessagesServlet.java logback/trunk/logback-access/src/main/java/ch/qos/logback/access/jetty/RequestLogImpl.java logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/ViewStatusMessagesServlet.java logback/trunk/logback-site/src/site/pages/access.html logback/trunk/logback-site/src/site/pages/manual/joran.html Log: Fixing LBCORE-81 and LBCORE-82. - Added StatusMessage viewer servlet for lb-classic called ViewStatusMessagesServlet. - Added StatusMessage viewer servlet for lb-access called ViewStatusMessagesServlet. It works with Tomcat but not Jetty. - Added relevant documentation. Modified: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/ViewStatusMessagesServlet.java ============================================================================== --- logback/trunk/logback-access/src/main/java/ch/qos/logback/access/ViewStatusMessagesServlet.java (original) +++ logback/trunk/logback-access/src/main/java/ch/qos/logback/access/ViewStatusMessagesServlet.java Fri Jan 9 18:31:17 2009 @@ -9,6 +9,7 @@ */ package ch.qos.logback.access; +import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -20,8 +21,24 @@ private static final long serialVersionUID = 443878494348593337L; @Override - protected StatusManager getStatusManager(HttpServletRequest req, HttpServletResponse resp) { - return (StatusManager) req.getAttribute(AccessConstants.LOGBACK_STATUS_MANAGER_KEY); + protected StatusManager getStatusManager(HttpServletRequest req, + HttpServletResponse resp) { + + ServletContext sc = getServletContext(); + StatusManager result = (StatusManager) sc + .getAttribute(AccessConstants.LOGBACK_STATUS_MANAGER_KEY); + return result; + +// if (result != null) { +// System.out.println("from ServletContext"); +// return result; +// } else { +// HttpSession httpSession = req.getSession(true); +// +// System.out.println("from httpSession"); +// return (StatusManager) httpSession +// .getAttribute(AccessConstants.LOGBACK_STATUS_MANAGER_KEY); +// } } @Override Modified: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/jetty/RequestLogImpl.java ============================================================================== --- logback/trunk/logback-access/src/main/java/ch/qos/logback/access/jetty/RequestLogImpl.java (original) +++ logback/trunk/logback-access/src/main/java/ch/qos/logback/access/jetty/RequestLogImpl.java Fri Jan 9 18:31:17 2009 @@ -4,7 +4,7 @@ import java.util.HashMap; import java.util.Iterator; -import javax.servlet.ServletContext; +import javax.servlet.http.HttpSession; import org.mortbay.jetty.Request; import org.mortbay.jetty.RequestLog; @@ -92,7 +92,7 @@ * <appender-ref ref="SMTP" /> * </configuration> * </pre> - + * * @author Ceki Gülcü * @author Sébastien Pennec */ @@ -106,8 +106,7 @@ FilterAttachableImpl<AccessEvent> fai = new FilterAttachableImpl<AccessEvent>(); String filename; boolean started = false; - boolean alreadySetLogbackStatusManager = false; - + public RequestLogImpl() { putObject(CoreConstants.EVALUATOR_MAP, new HashMap()); } @@ -118,18 +117,12 @@ AccessEvent accessEvent = new AccessEvent(jettyRequest, jettyResponse, adapter); - if (!alreadySetLogbackStatusManager) { - alreadySetLogbackStatusManager = true; - ServletContext sc = jettyRequest.getContext(); - // servlet context is always null - if (sc != null) { - sc.setAttribute(AccessConstants.LOGBACK_STATUS_MANAGER_KEY, - getStatusManager()); - } + HttpSession s = jettyRequest.getSession(); + if (s != null) { + System.out.println("Setting as session attribute"); + s.setAttribute(AccessConstants.LOGBACK_STATUS_MANAGER_KEY, + getStatusManager()); } - - jettyRequest.setAttribute( - AccessConstants.LOGBACK_STATUS_MANAGER_KEY, getStatusManager()); if (getFilterChainDecision(accessEvent) == FilterReply.DENY) { return; } Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/ViewStatusMessagesServlet.java ============================================================================== --- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/ViewStatusMessagesServlet.java (original) +++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/ViewStatusMessagesServlet.java Fri Jan 9 18:31:17 2009 @@ -21,7 +21,6 @@ private static final long serialVersionUID = 443878494348593337L; - // @Override protected StatusManager getStatusManager(HttpServletRequest req, HttpServletResponse resp) { Modified: logback/trunk/logback-site/src/site/pages/access.html ============================================================================== --- logback/trunk/logback-site/src/site/pages/access.html (original) +++ logback/trunk/logback-site/src/site/pages/access.html Fri Jan 9 18:31:17 2009 @@ -111,9 +111,39 @@ the logback-access configuration file. Here is an example. </p> + <p class="source"><Valve className="ch.qos.logback.access.tomcat.LogbackValve" + quiet="true" filename="c:/my-logback-access.xml"/></p> - <div class="source"><pre><Valve className="ch.qos.logback.access.tomcat.LogbackValve" - quiet="true" filename="c:/my-logback-access.xml"/></pre></div> + <h3><a name="viewingStatusMessages" + href="#viewingStatusMessages">Viewing status messages</a></h3> + + <p>Logback-access ships with a servlet called + <code>ViewStatusMessagesServlet</code>. This servlet prints the + internal status messages of the <code>LogbackValve</code> as an + HTML table. Here is sample output. + </p> + + + <a href="images/lbAccessStatus.jpg"> + <img src="images/lbAccessStatus.jpg" alt="click to enlarge" width="90%"/> + </a> + + <p>To add this servlet to your web-application, add the following + lines to its <em>WEB-INF/web.xml</em> file.</p> + + <p class="source"> <servlet> + <servlet-name>AccessViewStatusMessages</servlet-name> + <servlet-class>ch.qos.logback.access.ViewStatusMessagesServlet</servlet-class> + </servlet> + + <servlet-mapping> + <servlet-name>AccessViewStatusMessages</servlet-name> + <url-pattern>/lbAccessStatus</url-pattern> + </servlet-mapping></p> + + <p>The <code>ViewStatusMessages</code> servlet will available + under the URL <code>http://host/yourWebapp/lbAccessStatus</code> + </p> <a name="jetty"></a> <h1>Logback-access under Jetty</h1> Modified: logback/trunk/logback-site/src/site/pages/manual/joran.html ============================================================================== --- logback/trunk/logback-site/src/site/pages/manual/joran.html (original) +++ logback/trunk/logback-site/src/site/pages/manual/joran.html Fri Jan 9 18:31:17 2009 @@ -409,15 +409,16 @@ errors. </p> - <h3> - <a name="statusListener" href="#statusListener">Listening to - status messages</a> - </h3> - - <p>Logback collects its internal status data in its <code><a - href="../xref/ch/qos/logback/core/status/StatusManager.html">StatusManager</a></code>, - accessible via the LoggerContext. - </p> + <h3><a name="viewingStatusMessages" + href="#viewingStatusMessages">Viewing status messages</a> + </h3> + + + + <p>Logback collects its internal status data in a <code><a + href="../xref/ch/qos/logback/core/status/StatusManager.html">StatusManager</a></code> + object, accessible via the <code>LoggerContext</code>. + </p> <p>Given a <code>StatusManager</code> you an access all the status data associated with a logback context. To keep memory usage at @@ -428,6 +429,39 @@ <em>T</em> messages. At present time <em>H</em>=<em>T</em>=150, although these values may change in future releases.</p> + <p>Logback-classic ships with a servlet called + ViewStatusMessagesServlet. This servlet prints the contents of the + <code>StatusManager</code> associated with the current + <code>LoggerContext</code> as an HTML table. Here is sample output. + </p> + + <a href="images/chapter3/lbClassicStatus.jpg"> + <img src="images/chapter3/lbClassicStatus.jpg" alt="click to enlarge" width="90%"/> + </a> + + <p>To add this servlet to your web-application, add the following + lines to its <em>WEB-INF/web.xml</em> file.</p> + + <p class="source"> <servlet> + <servlet-name>ViewStatusMessages</servlet-name> + <servlet-class>ch.qos.logback.classic.ViewStatusMessagesServlet</servlet-class> + </servlet> + + <servlet-mapping> + <servlet-name>ViewStatusMessages</servlet-name> + <url-pattern>/lbClassicStatus</url-pattern> + </servlet-mapping></p> + + <p>The <code>ViewStatusMessages</code> servlet will viewable under + the URL <code>http://host/yourWebapp/lbClassicStatus</code> + </p> + + <h3> + <a name="statusListener" href="#statusListener">Listening to + status messages</a> + </h3> + + <p>You may also attach a <code>StatusListener</code> to a <code>StatusManager</code> so that you can take immediate action in @@ -477,9 +511,12 @@ <p class="source">java <b>-Dlogback.statusListenerClass</b>=ch.qos.logback.core.status.OnConsoleStatusListener ...</p> - <h2> - <a name="syntax" href="#syntax">Configuration file Syntax</a> - </h2> + + + + <h2> + <a name="syntax" href="#syntax">Configuration file Syntax</a> + </h2> <p>To obtain these different logging behaviors we do not need to recompile code. You can easily configure logback so as to disable Added: logback/trunk/logback-site/src/site/resources/images/lbAccessStatus.jpg ============================================================================== Binary file. No diff available. Added: logback/trunk/logback-site/src/site/resources/manual/images/chapter3/lbClassicStatus.jpg ============================================================================== Binary file. No diff available.
participants (1)
-
noreply.ceki@qos.ch