[logback-dev] svn commit: r1831 - in logback/trunk: logback-classic/src/test/java/ch/qos/logback/classic/net logback-core/src/main/java/ch/qos/logback/core/net logback-examples/src/main/java/chapter4/mail logback-site/src/site/pages logback-site/src/site/pages/manual

noreply.ceki at qos.ch noreply.ceki at qos.ch
Wed Oct 15 00:45:06 CEST 2008


Author: ceki
Date: Wed Oct 15 00:45:06 2008
New Revision: 1831

Added:
   logback/trunk/logback-examples/src/main/java/chapter4/mail/gmailSSL.xml
   logback/trunk/logback-examples/src/main/java/chapter4/mail/gmailSTARTTLS.xml
Modified:
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppender_SubethaSMTPTest.java
   logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SMTPAppenderBase.java
   logback/trunk/logback-site/src/site/pages/manual/appenders.html
   logback/trunk/logback-site/src/site/pages/news.html

Log:
LBCORE-17

Added documentation and test cases for STARTTLS and SSL support.

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppender_SubethaSMTPTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppender_SubethaSMTPTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppender_SubethaSMTPTest.java	Wed Oct 15 00:45:06 2008
@@ -234,7 +234,7 @@
     MessageListenerAdapter mla = (MessageListenerAdapter)wiser.getServer().getMessageHandlerFactory();
     mla.setAuthenticationHandlerFactory(new TrivialAuthHandlerFactory());
     
-    smtpAppender.setStartTLS(true);
+    smtpAppender.setSTARTTLS(true);
     smtpAppender.setUsername("xx");
     smtpAppender.setPassword("xx");    
   
@@ -259,7 +259,7 @@
     smtpAppender.setSMTPPort(587);
     
     smtpAppender.addTo("XXX at gmail.com");
-    smtpAppender.setStartTLS(true);
+    smtpAppender.setSTARTTLS(true);
     smtpAppender.setUsername("XXX at gmail.com");
     smtpAppender.setPassword("XXX");    
   
@@ -280,7 +280,7 @@
     smtpAppender.setSMTPPort(465);
     
     smtpAppender.addTo("XXX at gmail.com");
-    smtpAppender.setSsl(true);
+    smtpAppender.setSSL(true);
     smtpAppender.setUsername("XXX at gmail.com");
     smtpAppender.setPassword("XXX");    
   

Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SMTPAppenderBase.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SMTPAppenderBase.java	(original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SMTPAppenderBase.java	Wed Oct 15 00:45:06 2008
@@ -58,7 +58,7 @@
   private String subjectStr = null;
   private String smtpHost;
   private int smtpPort = 25;
-  private boolean startTLS = false;
+  private boolean starttls = false;
   private boolean ssl = false;
 
   String username;
@@ -96,14 +96,14 @@
       props.put("mail.smtp.auth", "true");
     }
 
-    if (isStartTLS() && isSsl()) {
+    if (isSTARTTLS() && isSSL()) {
       addError("Both SSL and StartTLS cannot be enabled simultaneously");
     } else {
-      if (isStartTLS()) {
+      if (isSTARTTLS()) {
         props.setProperty("mail.smtp.auth", "true");
         props.put("mail.smtp.starttls.enable", "true");
       }
-      if (isSsl()) {
+      if (isSSL()) {
         String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
         props.put("mail.smtp.socketFactory.port", Integer.toString(smtpPort));
         props.put("mail.smtp.socketFactory.class", SSL_FACTORY);
@@ -358,19 +358,19 @@
     this.msg = msg;
   }
 
-  public boolean isStartTLS() {
-    return startTLS;
+  public boolean isSTARTTLS() {
+    return starttls;
   }
 
-  public void setStartTLS(boolean startTLS) {
-    this.startTLS = startTLS;
+  public void setSTARTTLS(boolean startTLS) {
+    this.starttls = startTLS;
   }
 
-  public boolean isSsl() {
+  public boolean isSSL() {
     return ssl;
   }
 
-  public void setSsl(boolean ssl) {
+  public void setSSL(boolean ssl) {
     this.ssl = ssl;
   }
 

Added: logback/trunk/logback-examples/src/main/java/chapter4/mail/gmailSSL.xml
==============================================================================
--- (empty file)
+++ logback/trunk/logback-examples/src/main/java/chapter4/mail/gmailSSL.xml	Wed Oct 15 00:45:06 2008
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<configuration>
+	  
+  <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
+    <SMTPHost>smtp.gmail.com</SMTPHost>
+    <SMTPPort>465</SMTPPort>
+    <SSL>true</SSL>
+    <Username>USERNAME</Username>
+    <Password>PASSWORD</Password>
+    
+    
+    <To>EMAIL-DESTINATION</To>
+    <To>ANOTHER_EMAIL_DESTINATION</To> <!-- a second destination is optional -->
+    <From>SENDER-EMAIL</From>
+    <Subject>TESTING: %logger{20} - %m</Subject>
+    <layout class="ch.qos.logback.classic.PatternLayout">
+      <Pattern>%date %-5level %logger - %message%n</Pattern>
+    </layout>	    
+  </appender>
+
+  <root>
+    <level value="debug"/>
+    <appender-ref ref="EMAIL" />
+  </root>  
+</configuration>

Added: logback/trunk/logback-examples/src/main/java/chapter4/mail/gmailSTARTTLS.xml
==============================================================================
--- (empty file)
+++ logback/trunk/logback-examples/src/main/java/chapter4/mail/gmailSTARTTLS.xml	Wed Oct 15 00:45:06 2008
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<configuration>
+	  
+  <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
+    <SMTPHost>smtp.gmail.com</SMTPHost>
+    <SMTPPort>587</SMTPPort>
+    <STARTTLS>true</STARTTLS>
+    <Username>USERNAME</Username>
+    <Password>PASSWORD</Password>
+    
+    <To>EMAIL-DESTINATION</To>
+    <To>ANOTHER_EMAIL_DESTINATION</To> <!-- a second destination is optional -->
+    <From>SENDER-EMAIL</From>
+    <Subject>TESTING: %logger{20} - %m</Subject>
+    <layout class="ch.qos.logback.classic.PatternLayout">
+      <Pattern>%date %-5level %logger - %message%n</Pattern>
+    </layout>	    
+  </appender>
+
+  <root>
+    <level value="debug"/>
+    <appender-ref ref="EMAIL" />
+  </root>  
+</configuration>

Modified: logback/trunk/logback-site/src/site/pages/manual/appenders.html
==============================================================================
--- logback/trunk/logback-site/src/site/pages/manual/appenders.html	(original)
+++ logback/trunk/logback-site/src/site/pages/manual/appenders.html	Wed Oct 15 00:45:06 2008
@@ -1920,14 +1920,14 @@
         <td><code>String</code></td>
         <td>The host name of the SMTP server. This parameter is mandatory.</td>
       </tr>
-
+      
       <tr class="alt">
         <td><b><span class="option">SMTPPort</span></b></td>
         <td><code>int</code></td>
         <td>The port where the SMTP server is listening. Defaults to
         25.</td>
       </tr>
-
+      
       <tr>
         <td><b><span class="option">To</span></b></td>
         <td><code>String</code></td>
@@ -1964,46 +1964,79 @@
           </p>
 
           <p>By default, this option is set to "%logger{20} - %m".</p>
-			</td>
-		</tr>
-		<tr class="alt">
-			<td><b><span class="option">BufferSize</span></b></td>
-			<td><code>int</code></td>
-			<td>
-				The <span class="option">BufferSize</span> option takes a positive 
-				integer representing the maximum number of logging events to collect in a 
-				cyclic buffer. When the <span class="option">BufferSize</span> is reached, 
-				oldest events are deleted as new events are added to the buffer. 
-				The default size of the cyclic buffer is 512.
-			</td>
-		</tr>
-		<tr >
-			<td><b><span class="option">Evaluator</span></b></td>
-			<td><code>String</code></td>
-			<td>
-				<p>This option is declared by creating a new <code>&lt;EventEvaluator/></code>
-				element. The name of the class that the user wishes to use as the
-				<code>SMTPAppender</code>'s <code>Evaluator</code> can be given
-				by adding an attribute to the newly created element.
-				</p>
-
-        <p>More details about the use of event evaluators with
-        <code>SMTPAppender</code> follow further down this document.
-				</p>
-				
-        <p>In the absence of this option, <code>SMTPAppender</code> is
-        assigned a default event evaluator which triggers email
-        transmission as a response to any event of level
-        <em>ERROR</em> or higher.
-				</p>
-
-        <p><code>EventEvaluator</code> objects are subclasses of the
-        <code>JaninoEventEvaluatorBase</code> which depends on
-        Janino. See the <a href="../dependencies.html">dependencies
-        page</a> for more information.
-        </p>
-			</td>
-		</tr>
+        </td>
+      </tr>
+      <tr class="alt">
+        <td><b><span class="option">BufferSize</span></b></td>
+        <td><code>int</code></td>
+        <td>
+          The <span class="option">BufferSize</span> option takes a positive 
+          integer representing the maximum number of logging events to collect in a 
+          cyclic buffer. When the <span class="option">BufferSize</span> is reached, 
+          oldest events are deleted as new events are added to the buffer. 
+          The default size of the cyclic buffer is 512.
+        </td>
+      </tr>
+      <tr >
+        <td><b><span class="option">Evaluator</span></b></td>
+        <td><code>String</code></td>
+        <td>
+          <p>This option is declared by creating a new <code>&lt;EventEvaluator/></code>
+          element. The name of the class that the user wishes to use as the
+          <code>SMTPAppender</code>'s <code>Evaluator</code> can be given
+          by adding an attribute to the newly created element.
+          </p>
+          
+          <p>More details about the use of event evaluators with
+          <code>SMTPAppender</code> follow further down this document.
+          </p>
+          
+          <p>In the absence of this option, <code>SMTPAppender</code> is
+          assigned a default event evaluator which triggers email
+          transmission as a response to any event of level
+          <em>ERROR</em> or higher.
+          </p>
+          
+          <p><code>EventEvaluator</code> objects are subclasses of the
+          <code>JaninoEventEvaluatorBase</code> which depends on
+          Janino. See the <a href="../dependencies.html">dependencies
+          page</a> for more information.
+          </p>
+        </td>
+      </tr>
+      <tr class="alt">
+        <td><b><span class="option">Username</span></b></td>
+        <td><code>String</code></td>
+        <td>The username value to use during plain user/password
+        authentication. By default, this parameter is null.
+        </td>
+      </tr>
+      <tr >
+        <td><b><span class="option">Password</span></b></td>
+        <td><code>String</code></td>
+        <td>The password value to use for plain user/password
+        authentication. By default, this parameter is null.
+        </td>
+      </tr>
+      <tr class="alt">
+        <td><b><span class="option">STARTTLS</span></b></td>
+        <td><code>boolean</code></td>
+        <td>If this parameter is set to true, then this appender will
+        issue the STARTTLS command (if the server supports it) causing
+        the connection to switch to SSL. Note that the connection is
+        initally non-encrypted. By default, this parameter is set to
+        false.
+        </td>
+      </tr>
+      <tr >
+        <td><b><span class="option">SSL</span></b></td>
+        <td><code>boolean</code></td>
+        <td>If this parameter is set to true, then this appender will
+        open an SSL conneciton to the server. By default, this
+        parameter is set to false.
+        </td>
+      </tr>
+
 		</table>		
 		
 		<p>The SMTPAppender keeps only the last <span
@@ -2230,26 +2263,63 @@
   &lt;/root>  
 &lt;/configuration></pre></div>
 
+    
+    <h3>Authentication/STARTTLS/SSL</h3>
+
+    <p>SMTPAppender supports plain user/password authentication as
+    well as both STARTTLS and SSL.
+    </p>
+
+    <p>The next example shows you how to configure SMTPAppender for
+    gmail with SSL. </p>
+    
+<em>Example 4.13: <code>SMTPAppender</code> to GMAIL using SSL (logback-examples/src/main/java/chapter4/mail/gmailSSL.xml)</em>
+
+<div class="source"><pre>&lt;configuration>
+  &lt;appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
+    <b>&lt;SMTPHost>smtp.gmail.com&lt;/SMTPHost>
+    &lt;SMTPPort>465&lt;/SMTPPort>
+    &lt;SSL>true&lt;/SSL>
+    &lt;Username>USERNAME at gmail.com&lt;/Username>
+    &lt;Password>PASSWORD&lt;/Password></b>
 
+    &lt;To>${to}&lt;/To>
+    &lt;From>${from}&lt;/From>
+    &lt;layout class="ch.qos.logback.classic.html.HTMLLayout"/>
+  &lt;/appender>
+
+  &lt;root>
+    &lt;level value ="debug"/>
+    &lt;appender-ref ref="EMAIL" />
+  &lt;/root>  
+&lt;/configuration></pre></div>
+
+    <p>For a STARTTLS with gmail refer to the configuration file
+    <em>logback-examples/src/main/java/chapter4/mail/gmailSTARTTLS.xml)</em>
+
+    </p>
 
 		<a name="DBAppender"></a>
 		<h3>DBAppender</h3>
 		
-		<p>
-			The <a href="../xref/ch/qos/logback/classic/db/DBAppender.html"><code>DBAppender</code></a> 
-			inserts loggin events into three database tables in a format
-			independent of the Java programming language. 
-		</p>
-		<p>
-			These three tables are <em>logging_event</em>, <em>logging_event_property</em> and
-			<em>logging_event_exception</em>. They all must exist before <code>DBAppender</code>
-			can be used. Logback ships with SQL scripts that will create the tables. 
-			They can be found in the found in the 
-			<em>logback-classic/src/main/java/ch/qos/logback/classic/db/dialect</em> directory. There
-			is a specific script for each of the most popular database systems. 
-			If the script for your particular type of database system is missing, it should be
-			quite easy to write one, taking example on the already existing scripts. If
-			you send them to us, we will gladly include missing scripts in future releases.
+		<p>The <a
+		href="../xref/ch/qos/logback/classic/db/DBAppender.html"><code>DBAppender</code></a>
+		inserts loggin events into three database tables in a format
+		independent of the Java programming language.
+		</p>
+
+		<p>These three tables are <em>logging_event</em>,
+		<em>logging_event_property</em> and
+		<em>logging_event_exception</em>. They all must exist before
+		<code>DBAppender</code> can be used. Logback ships with SQL
+		scripts that will create the tables.  They can be found in the
+		found in the
+		<em>logback-classic/src/main/java/ch/qos/logback/classic/db/dialect</em>
+		directory. There is a specific script for each of the most popular
+		database systems.  If the script for your particular type of
+		database system is missing, it should be quite easy to write one,
+		taking example on the already existing scripts. If you send them
+		to us, we will gladly include missing scripts in future releases.
 		</p>
 
 		<p>

Modified: logback/trunk/logback-site/src/site/pages/news.html
==============================================================================
--- logback/trunk/logback-site/src/site/pages/news.html	(original)
+++ logback/trunk/logback-site/src/site/pages/news.html	Wed Oct 15 00:45:06 2008
@@ -81,7 +81,6 @@
   </p>
 
 
-
   <p>Fixed issue <a
   href="http://jira.qos.ch/browse/LBCORE-27">LBCORE-27</a> reported by
   Peter Royal. SMTPAppender now outputs its presentation footer and
@@ -110,6 +109,13 @@
 
   <p>Fixed issue <a
   href="http://jira.qos.ch/browse/LBGENERAL-24">LBGENERAL-24</a>
+  reported by Hung Tang. SMTPAppender now supports plain
+  username/password authentication as well as both the STARTTLS
+  command and SSL connections.
+  </p>
+
+  <p>Fixed issue <a
+  href="http://jira.qos.ch/browse/LBCORE-17">LBCORE-17</a>
   reported by Thorbj&oslash;rn Ravn Andersen. Logback now relies on
   Geronimo JMS API specifications instead of Sun's JMS API
   specification, the latter requiring manual installation. With
@@ -117,7 +123,6 @@
   manually install any dependencies.
   </p>
 
-
   <p><a href="http://jira.qos.ch/browse/LBCORE-32">LBCORE-32</a>
   </p>
 


More information about the logback-dev mailing list