
Author: seb Date: Fri Oct 6 16:05:02 2006 New Revision: 628 Added: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/html/ logback/trunk/logback-access/src/main/java/ch/qos/logback/access/html/HTMLLayout.java logback/trunk/logback-access/src/main/java/ch/qos/logback/access/html/package.html Modified: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/PatternLayout.java logback/trunk/logback-access/src/main/java/ch/qos/logback/access/net/SMTPAppender.java Log: - added HTMLLayout for access module - minor fix on SMTPAppender javadoc Modified: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/PatternLayout.java ============================================================================== --- logback/trunk/logback-access/src/main/java/ch/qos/logback/access/PatternLayout.java (original) +++ logback/trunk/logback-access/src/main/java/ch/qos/logback/access/PatternLayout.java Fri Oct 6 16:05:02 2006 @@ -212,7 +212,7 @@ */ public class PatternLayout extends PatternLayoutBase implements AccessLayout { - static final Map<String, String> defaultConverterMap = new HashMap<String, String>(); + public static final Map<String, String> defaultConverterMap = new HashMap<String, String>(); public static String CLF_PATTERN = "%h %l %u %t \"%r\" %s %b"; Added: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/html/HTMLLayout.java ============================================================================== --- (empty file) +++ logback/trunk/logback-access/src/main/java/ch/qos/logback/access/html/HTMLLayout.java Fri Oct 6 16:05:02 2006 @@ -0,0 +1,129 @@ +/** + * Logback: the reliable, generic, fast and flexible logging framework. + * + * Copyright (C) 1999-2006, QOS.ch + * + * This library is free software, you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation. + */ + +package ch.qos.logback.access.html; + +import java.util.Map; + +import ch.qos.logback.access.AccessLayout; +import ch.qos.logback.access.PatternLayout; +import ch.qos.logback.access.spi.AccessEvent; +import ch.qos.logback.core.html.HTMLLayoutBase; +import ch.qos.logback.core.html.NOPThrowableRenderer; +import ch.qos.logback.core.pattern.Converter; + +/** + * + * HTMLLayout outputs events in an HTML table. + * <p> + * The content of the table columns are specified using a conversion pattern. + * See {@link ch.qos.logback.access.PatternLayout} for documentation on the + * available patterns. + * <p> + * A user-specified external CSS file can be linked to the html page. + * In case one does not want to customize the html output, an internal CSS style + * is used. + * + * The HTMLLayout is often used in conjunction with SMTPAppender, to + * send a nicely formatted html email. Of course, it can be used with any + * other Appender. + * + * In case on wants to use the HTMLLayout with a SMTPAppender, here is a sample + * configuration file that can be used. + * + * <pre> + * <configuration> + * <appender name="SMTP" class="ch.qos.logback.access.net.SMTPAppender"> + * <layout class="ch.qos.logback.access.html.HTMLLayout"> + * <param name="pattern" value="%remoteIP%date%requestURL%statusCode%bytesSent" /> + * </layout> + * <param name="From" value="sender.email@domain.net" /> + * <param name="SMTPHost" value="mail.domain.net" /> + * <param name="Subject" value="LastEvent: %statusCode %requestURL" /> + * <param name="To" value="destination.email@domain.net" /> + * </appender> + * + * <appender-ref ref="SMTP" /> + * </configuration> + *</pre> + * <p> + * In this configuration file, the <em>throwableRenderer</em> element specifies the default + * implementation of IThrowableRenderer. It could be omitted, but is showed for educationnal + * purposes. + * <p> + * @author Ceki Gülcü + * @author Sébastien Pennec + */ +public class HTMLLayout extends HTMLLayoutBase implements AccessLayout { + + /** + * Default pattern string for log output. Currently set to the string <b>"%m" + * </b> which just prints the application supplied message. + */ + static final String DEFAULT_CONVERSION_PATTERN = "%date%thread%level%logger%mdc%msg"; + + /** + * Constructs a PatternLayout using the DEFAULT_LAYOUT_PATTERN. + * + * The default pattern just produces the application supplied message. + */ + public HTMLLayout() { + pattern = DEFAULT_CONVERSION_PATTERN; + throwableRenderer = new NOPThrowableRenderer(); + } + + @Override + protected Map<String, String> getDefaultConverterMap() { + return PatternLayout.defaultConverterMap; + } + + public String doLayout(Object event) { + return doLayout((AccessEvent) event); + } + + public String doLayout(AccessEvent event) { + StringBuffer buf = new StringBuffer(); + handleTableClosing(buf); + + boolean odd = true; + if (((counter++) & 1) == 0) { + odd = false; + } + + buf.append(LINE_SEP); + buf.append("<tr class=\""); + if (odd) { + buf.append(" odd\">"); + } else { + buf.append(" even\">"); + } + buf.append(LINE_SEP); + + Converter c = head; + while (c != null) { + appendEventToBuffer(buf, c, event); + c = c.getNext(); + } + buf.append("</tr>"); + buf.append(LINE_SEP); + + return buf.toString(); + } + + private void appendEventToBuffer(StringBuffer buf, Converter c, + AccessEvent event) { + buf.append("<td class=\""); + buf.append(computeConverterName(c)); + buf.append("\">"); + buf.append(c.convert(event)); + buf.append("</td>"); + buf.append(LINE_SEP); + } +} Added: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/html/package.html ============================================================================== --- (empty file) +++ logback/trunk/logback-access/src/main/java/ch/qos/logback/access/html/package.html Fri Oct 6 16:05:02 2006 @@ -0,0 +1,13 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> + +<html> + <head> + <title></title> + </head> + + <body> + + <p>Contains classes to format log output in HTML.</p> + + </body> +</html> \ No newline at end of file Modified: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/net/SMTPAppender.java ============================================================================== --- logback/trunk/logback-access/src/main/java/ch/qos/logback/access/net/SMTPAppender.java (original) +++ logback/trunk/logback-access/src/main/java/ch/qos/logback/access/net/SMTPAppender.java Fri Oct 6 16:05:02 2006 @@ -30,7 +30,7 @@ * application context. * <p> * By default, the email is sent everything an event has a status code of - * 500 (server error) or higher. + * <em>500 (server error) or higher</em>. * <p> * @author Ceki Gülcü * @author Sébastien Pennec