[logback-dev] svn commit: r1221 - in logback/trunk: logback-examples/src/main/java/chapter4/conf logback-site/src/site/xdocTemplates/manual

noreply.seb at qos.ch noreply.seb at qos.ch
Mon Jan 15 20:03:13 CET 2007


Author: seb
Date: Mon Jan 15 20:03:13 2007
New Revision: 1221

Added:
   logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-JMSQueue.xml
   logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-JMSTopic.xml
Modified:
   logback/trunk/logback-site/src/site/xdocTemplates/manual/appenders.xml

Log:
Added examples

Added: logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-JMSQueue.xml
==============================================================================
--- (empty file)
+++ logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-JMSQueue.xml	Mon Jan 15 20:03:13 2007
@@ -0,0 +1,19 @@
+<configuration>
+
+	<appender name="Queue"
+		class="ch.qos.logback.classic.net.JMSQueueAppender">
+		<InitialContextFactoryName>
+			org.apache.activemq.jndi.ActiveMQInitialContextFactory
+		</InitialContextFactoryName>
+		<ProviderURL>tcp://localhost:61616</ProviderURL>
+		<QueueConnectionFactoryBindingName>
+			ConnectionFactory
+		</QueueConnectionFactoryBindingName>
+		<QueueBindingName>MyQueue</QueueBindingName>
+	</appender>
+
+	<root>
+		<level value="debug" />
+		<appender-ref ref="Queue" />
+	</root>
+</configuration>
\ No newline at end of file

Added: logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-JMSTopic.xml
==============================================================================
--- (empty file)
+++ logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-JMSTopic.xml	Mon Jan 15 20:03:13 2007
@@ -0,0 +1,19 @@
+<configuration>
+
+	<appender name="Topic"
+		class="ch.qos.logback.classic.net.JMSTopicAppender">
+		<InitialContextFactoryName>
+			org.apache.activemq.jndi.ActiveMQInitialContextFactory
+		</InitialContextFactoryName>
+		<ProviderURL>tcp://localhost:61616</ProviderURL>
+		<TopicConnectionFactoryBindingName>
+			ConnectionFactory
+		</TopicConnectionFactoryBindingName>
+		<TopicBindingName>MyTopic</TopicBindingName>
+	</appender>
+
+	<root>
+		<level value="debug" />
+		<appender-ref ref="Topic" />
+	</root>
+</configuration>
\ No newline at end of file

Modified: logback/trunk/logback-site/src/site/xdocTemplates/manual/appenders.xml
==============================================================================
--- logback/trunk/logback-site/src/site/xdocTemplates/manual/appenders.xml	(original)
+++ logback/trunk/logback-site/src/site/xdocTemplates/manual/appenders.xml	Mon Jan 15 20:03:13 2007
@@ -1488,12 +1488,12 @@
 			publish-and-subscribe and point-to-point queuing. Logback supports the former
 			model with <code>JMSTopicAppender</code> and the latter with <code>JMSQueueAppender</code> 
 			Both appenders extend the <code>JMSAppenderBase</code> class and 
-			publish serialized events to a topic or queue specified by the user. 
-			One or more <code>JMSTopicSink</code> or <code>JMSQueueSink</code> applications 
-			can consume these serialized events. 
+			publish serialized events to a topic or queue specified by the user.
 		</p>
 		
 		<p>
+			One or more <code>JMSTopicSink</code> or <code>JMSQueueSink</code> applications 
+			can register to a JMS server and consume the serialized events. 
 			The consumer of JMS appenders generated events need not be only <code>JMSTopicSink</code> 
 			or <code>JMSQueueSink</code> applications. Any application or MessageDrivenBean 
 			capable of subscribing to the appropriate topic or queue and consuming serialized 
@@ -1681,7 +1681,42 @@
 			before calling <code>InitialContext</code> constructor taking a 
 			Properties (i.e. Hashtable) parameter. 
 		</p>
-
+		
+		<h4>Comments on JMS appenders</h4>
+		
+		<p>
+			Transmitting a packet of information using JMS is certain to be substantially 
+			slower then sending the same packet using raw TCP sockets. JMS vendors bragging 
+			about the performance of their messaging platform tend to omit this simple fact. 
+			Guaranteed store and forward messaging comes at a hefty price. 
+			In return for increased cost, JMS messaging provides decoupling of 
+			sender and receiver. As long as the JMS provider is reachable, messages 
+			will eventually arrive at destination. 
+			However, what if the JMS server is down or simply unreachable?
+		</p>
+		
+		<p>
+			According to the JMS specification, producers can mark a message as either 
+			persistent or non-persistent. The persistent delivery mode instructs the JMS provider 
+			to log the message to stable storage as part of the client's send operation, allowing 
+			the message to survive provider crashes. JMS appenders do not set the delivery 
+			mode of messages it produces because according to the JMS specification, 
+			the delivery mode is considered as an administered property.
+		</p>
+		
+		<p>
+			Once a message reaches the JMS provider, the provider assumes the responsibility 
+			of delivering it to its destination, relieving the client from this chore. 
+			What if the JMS server is unreachable? The JMS API provides an 
+			<code>ExceptionListener</code> interface to deal with this situation. 
+			When the client runtime of the JMS provider detects a lost connection to the JMS server, 
+			it calls the <code>onException()</code> method of the registered 
+			<code>ExceptionListener</code>. Once notified of the problem, client code can attempt 
+			to reestablish the connection. According to the section 4.3.8 of the JMS specification, 
+			the provider should attempt to resolve connection problems prior to notifying the client. 
+			The JMS appenders do not implement the <code>ExceptionListener</code> interface.
+		</p>
+		
 		<a name="JMSTopicAppender" />
 		<h3>JMSTopicAppender</h3>
 		
@@ -1799,7 +1834,31 @@
 			</td>
 		</tr>
 		</table>
+		
+		<p>
+			<code>JMSTopicAppender</code> is rather straightforward to configure:
+		</p>
 
+		<em>Example 4.8: JMSTopicAppender configuration (logback-examples/src/main/java/chapter4/conf/logback-JMSTopic.xml)</em>
+<div class="source"><pre>&lt;configuration>
+
+  &lt;appender name="Topic"
+    class="ch.qos.logback.classic.net.JMSTopicAppender">
+    &lt;InitialContextFactoryName>
+      org.apache.activemq.jndi.ActiveMQInitialContextFactory
+    &lt;/InitialContextFactoryName>
+    &lt;ProviderURL>tcp://localhost:61616&lt;/ProviderURL>
+    &lt;TopicConnectionFactoryBindingName>
+      ConnectionFactory
+    &lt;/TopicConnectionFactoryBindingName>
+    &lt;TopicBindingName>MyTopic&lt;/TopicBindingName>
+  &lt;/appender>
+
+  &lt;root>
+    &lt;level value="debug" />
+    &lt;appender-ref ref="Topic" />
+  &lt;/root>
+&lt;/configuration></pre></div>
 		
 		<a name="JMSQueueAppender" />
 		<h3>JMSQueueAppender</h3>
@@ -1845,16 +1904,30 @@
 		</tr>
 		</table>
 		
-		jms comments
-		
-		diff topic/queue: client goes off and back online
-		
-		
-		
-		
-		
-		
-		
+		<p>
+			A typical <code>JMSQueueAppender</code> configuration file looks very
+			similar to that of a <code>JMSTopicAppender</code>.
+		</p>
+		<em>Example 4.9: JMSQueueAppender configuration (logback-examples/src/main/java/chapter4/conf/logback-JMSQueue.xml)</em>
+<div class="source"><pre>&lt;configuration>
+
+  &lt;appender name="Queue"
+    class="ch.qos.logback.classic.net.JMSQueueAppender">
+    &lt;InitialContextFactoryName>
+      org.apache.activemq.jndi.ActiveMQInitialContextFactory
+    &lt;/InitialContextFactoryName>
+    &lt;ProviderURL>tcp://localhost:61616&lt;/ProviderURL>
+    &lt;QueueConnectionFactoryBindingName>
+      ConnectionFactory
+    &lt;/QueueConnectionFactoryBindingName>
+    &lt;QueueBindingName>MyQueue&lt;/QueueBindingName>
+  &lt;/appender>
+
+  &lt;root>
+    &lt;level value="debug" />
+    &lt;appender-ref ref="Queue" />
+  &lt;/root>
+&lt;/configuration></pre></div>		
 		
 		<a name="SMTPAppender"/>
 		<h3>SMTPAppender</h3>
@@ -1985,7 +2058,7 @@
 			Here is a sample configuration file you can supply to chapter4.mail.Email:
 		</p>	
 		
-<em>Example 4.8: A sample <code>SMTPAppender</code> configuration (logback-examples/src/main/java/chapter4/mail/mail1.xml)</em>		
+<em>Example 4.10: A sample <code>SMTPAppender</code> configuration (logback-examples/src/main/java/chapter4/mail/mail1.xml)</em>		
 <div class="source"><pre>&lt;configuration>
 	  
   &lt;appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
@@ -2071,7 +2144,7 @@
 			event evaluator whereby every 1024th event triggers an email message.
 		</p>
 
-<em>Example 4.9: A <code>EventEvaluator</code> implementation
+<em>Example 4.11: A <code>EventEvaluator</code> implementation
 that evaluates to <code>true</code> every 1024th event (<a href="../xref/chapter4/mail/CounterBasedEvaluator.html">logback-examples/src/main/java/chapter4/mail/CounterBasedEvaluator.java</a>)</em>
 <div class="source"><pre>package chapter4.mail;
 
@@ -2122,7 +2195,7 @@
 			as its event evaluator.
 		</p>
 
-<em>Example 4.10: <code>SMTPAppender</code> with custom 
+<em>Example 4.12: <code>SMTPAppender</code> with custom 
 <code>Evaluator</code> and buffer size (logback-examples/src/main/java/chapter4/mail/mail3.xml)</em>
 
 <div class="source"><pre>&lt;configuration>
@@ -2420,7 +2493,7 @@
 			The following configuration file is what one would need.
 		</p>
 		
-<em>Example 4.11: <code>DBAppender</code> configuration (logback-examples/src/main/java/chapter4/db/append-toMySQL-with-driverManager.xml)</em>
+<em>Example 4.13: <code>DBAppender</code> configuration (logback-examples/src/main/java/chapter4/db/append-toMySQL-with-driverManager.xml)</em>
 <div class="source"><pre>&lt;configuration>
 
   <b>&lt;appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
@@ -2499,7 +2572,7 @@
 			<code>javax.sql.DataSource</code>.
 		</p>
 	
-<em>Example 4.12: <code>DBAppender</code> configuration (logback-examples/src/main/java/chapter4/db/append-with-datasource.xml)</em>	
+<em>Example 4.14: <code>DBAppender</code> configuration (logback-examples/src/main/java/chapter4/db/append-with-datasource.xml)</em>	
 <div class="source"><pre>&lt;configuration>
 
   &lt;appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
@@ -2611,7 +2684,7 @@
 			configuration file, logging events are sent to a MySQL database,
 			without any pooling.
 		</p>
-<em>Example 4.13: <code>DBAppender</code> configuration without pooling (logback-examples/src/main/java/chapter4/db/append-toMySQL-with-datasource.xml)</em>	
+<em>Example 4.15: <code>DBAppender</code> configuration without pooling (logback-examples/src/main/java/chapter4/db/append-toMySQL-with-datasource.xml)</em>	
 <div class="source"><pre>&lt;configuration>
 
   &lt;appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
@@ -2647,7 +2720,7 @@
 			in the classpath.
 		</p>
 
-<em>Example 4.14: <code>DBAppender</code> configuration with pooling (logback-examples/src/main/java/chapter4/db/append-toMySQL-with-datasource-and-pooling.xml)</em>			
+<em>Example 4.16: <code>DBAppender</code> configuration with pooling (logback-examples/src/main/java/chapter4/db/append-toMySQL-with-datasource-and-pooling.xml)</em>			
 <div class="source"><pre>&lt;configuration>
 
   &lt;appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
@@ -2784,7 +2857,7 @@
 			Here is a sample configuration using a <code>SyslogAppender</code>.
 		</p>
 		
-<em>Example 4.15: <code>SyslogAppender</code> configuration (logback-examples/src/main/java/chapter4/conf/logback-syslog.xml)</em>				
+<em>Example 4.17: <code>SyslogAppender</code> configuration (logback-examples/src/main/java/chapter4/conf/logback-syslog.xml)</em>				
 <div class="source"><pre>&lt;configuration>
 
   &lt;appender name="SYSLOG"
@@ -2849,7 +2922,7 @@
 		<p>
 			Here is a sample configuration of a <code>SMTPAppender</code> in the access environnement.
 		</p>
-<em>Example 4.15: <code>SMTPAppender</code> configuration (logback-examples/src/main/java/chapter4/conf/access/logback-smtp.xml)</em>					
+<em>Example 4.18: <code>SMTPAppender</code> configuration (logback-examples/src/main/java/chapter4/conf/access/logback-smtp.xml)</em>					
 <div class="source"><pre>&lt;appender name="SMTP"
   class="ch.qos.logback.access.net.SMTPAppender">
   &lt;layout class="ch.qos.logback.access.html.HTMLLayout">
@@ -3017,7 +3090,7 @@
 		<p>
 			Here is a sample configuration that uses <code>DBAppender</code>.
 		</p>
-		
+<em>Example 4.19: DBAppender configuration (logback-examples/src/main/java/chapter4/conf/access/logback-DB.xml)</em>		
 <div class="source"><pre>&lt;configuration>
 
   &lt;appender name="DB" class="ch.qos.logback.access.db.DBAppender">
@@ -3050,7 +3123,7 @@
     thus a few more methods are needed.
     </p>
     
-<em>Example 4.16: <code>CountingConsoleAppender</code> (logback-examples/src/main/java/chapter4/CountingConsoleAppender.java)</em>					    
+<em>Example 4.20: <code>CountingConsoleAppender</code> (logback-examples/src/main/java/chapter4/CountingConsoleAppender.java)</em>					    
 <div class="source"><pre>package chapter4;
 
 import ch.qos.logback.core.AppenderBase;



More information about the logback-dev mailing list