[logback-dev] svn commit: r888 - in logback/trunk: logback-classic/src/test/java/ch/qos/logback/classic/net logback-examples/src/main/java/chapter4/conf logback-examples/src/main/java/chapter4/db logback-site/src/site/xdocTemplates/manual
noreply.seb at qos.ch
noreply.seb at qos.ch
Thu Nov 9 09:50:07 CET 2006
Author: seb
Date: Thu Nov 9 09:50:06 2006
New Revision: 888
Added:
logback/trunk/logback-examples/src/main/java/chapter4/db/append-and-share-with-jndi.xml
- copied unchanged from r883, /logback/trunk/logback-examples/src/main/java/chapter4/db/append-with-jndi.xml
Removed:
logback/trunk/logback-examples/src/main/java/chapter4/db/append-with-jndi.xml
Modified:
logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SyslogAppenderTest.java
logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-syslog.xml
logback/trunk/logback-site/src/site/xdocTemplates/manual/appenders.xml
Log:
on going work on chapter 4
- SyslogAppender config (yet to be tested in real life)
- Modified SyslogAppenderTest, progress need to be done here, on testWithExceptions
Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SyslogAppenderTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SyslogAppenderTest.java (original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SyslogAppenderTest.java Thu Nov 9 09:50:06 2006
@@ -30,7 +30,7 @@
}
public void testBasic() throws InterruptedException {
- int port = MockSyslogServer.PORT+1;
+ int port = MockSyslogServer.PORT + 1;
MockSyslogServer mockServer = new MockSyslogServer(1, port);
mockServer.start();
@@ -44,35 +44,37 @@
sa.setSyslogHost("localhost");
sa.setFacility("MAIL");
sa.setPort(port);
+ sa.setSuffixPattern("[%thread] %logger %msg %exception");
sa.start();
assertTrue(sa.isStarted());
-
+
String loggerName = this.getClass().getName();
Logger logger = lc.getLogger(loggerName);
logger.addAppender(sa);
String logMsg = "hello";
logger.debug(logMsg);
StatusPrinter.print(lc.getStatusManager());
-
+
// wait max 2 seconds for mock server to finish. However, it should
// much sooner than that.
mockServer.join(8000);
assertTrue(mockServer.finished);
assertEquals(1, mockServer.msgList.size());
String msg = mockServer.msgList.get(0);
-
- String expected = "<"+(SyslogConstants.LOG_MAIL+SyslogConstants.DEBUG_SEVERITY)+">";
+
+ String expected = "<"
+ + (SyslogConstants.LOG_MAIL + SyslogConstants.DEBUG_SEVERITY) + ">";
assertTrue(msg.startsWith(expected));
String first = "<\\d{2}>\\w{3} \\d{2} \\d{2}(:\\d{2}){2} \\w* ";
String threadName = Thread.currentThread().getName();
-
- assertTrue(msg.matches(first +"\\["+threadName+"\\] "+ loggerName +" " +logMsg));
-
- }
-
- public void testExceptoin() throws InterruptedException {
- int port = MockSyslogServer.PORT+2;
+ assertTrue(msg.matches(first + "\\[" + threadName + "\\] " + loggerName
+ + " " + logMsg + " "));
+
+ }
+
+ public void testException() throws InterruptedException {
+ int port = MockSyslogServer.PORT + 2;
MockSyslogServer mockServer = new MockSyslogServer(1, port);
mockServer.start();
// give MockSyslogServer head start
@@ -85,31 +87,36 @@
sa.setSyslogHost("localhost");
sa.setFacility("MAIL");
sa.setPort(port);
+ sa.setSuffixPattern("[%thread] %logger %msg %exception");
sa.start();
assertTrue(sa.isStarted());
-
+
String loggerName = this.getClass().getName();
Logger logger = lc.getLogger(loggerName);
logger.addAppender(sa);
String logMsg = "hello";
- logger.debug(logMsg, new Exception("just testing"));
+ String exMsg = "just testing";
+ Exception ex = new Exception(exMsg);
+ logger.debug(logMsg, ex);
StatusPrinter.print(lc.getStatusManager());
-
+
// wait max 2 seconds for mock server to finish. However, it should
// much sooner than that.
mockServer.join(8000);
assertTrue(mockServer.finished);
assertEquals(1, mockServer.msgList.size());
String msg = mockServer.msgList.get(0);
-
- String expected = "<"+(SyslogConstants.LOG_MAIL+SyslogConstants.DEBUG_SEVERITY)+">";
+
+ String expected = "<"
+ + (SyslogConstants.LOG_MAIL + SyslogConstants.DEBUG_SEVERITY) + ">";
assertTrue(msg.startsWith(expected));
- //String first = "<\\d{2}>\\w{3} \\d{2} \\d{2}(:\\d{2}){2} \\w* ";
- //String threadName = Thread.currentThread().getName();
- System.out.println(msg);
- //assertTrue(msg.matches(first +"\\["+threadName+"\\] "+ loggerName +" " +logMsg));
-
- //fail("check exceptions");
+// String first = "<\\d{2}>\\w{3} \\d{2} \\d{2}(:\\d{2}){2} \\w* ";
+// String threadName = Thread.currentThread().getName();
+// String expectedResult = first + "\\[" + threadName + "\\] " + loggerName
+// + " " + logMsg + " " + ex.getClass().getCanonicalName() + ": " + exMsg + "\n";
+// assertTrue(msg.matches(expectedResult));
+
+ // fail("check exceptions");
}
}
Modified: logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-syslog.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-syslog.xml (original)
+++ logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-syslog.xml Thu Nov 9 09:50:06 2006
@@ -1,10 +1,10 @@
<configuration>
- <appender name="STDOUT"
+ <appender name="SYSLOG"
class="ch.qos.logback.classic.net.SyslogAppender">
<SyslogHost>pixie</SyslogHost>
<Facility>AUTH</Facility>
- <SuffixPattern>%-4relative [%thread] %-5level - %msg %n</SuffixPattern>
+ <SuffixPattern>%-4relative [%thread] %-5level - %msg</SuffixPattern>
</appender>
<root>
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 Thu Nov 9 09:50:06 2006
@@ -2035,6 +2035,33 @@
single configuration file and shared by logback and other frameworks.
</p>
+
+ <p>
+ The connection created by <code>DataSourceConnectionSource</code> can be placed in a JNDI
+ context by using <code>BindDataSourceToJNDIAction</code>. In that case, one has to specify
+ the use of this class by adding a new rule to Joran, logback's configuration framework. Here
+ is an excerpt of such a configuration file.
+ </p>
+
+<div class="source"><pre><configuration>
+ ..
+ <b><newRule pattern="configuration/bindDataSourceToJNDI"
+ actionClass="ch.qos.logback.core.db.BindDataSourceToJNDIAction"/>
+
+ <bindDataSourceToJNDI /></b>
+ ..
+</configuration></pre></div>
+
+ <p>
+ The <em>newRule</em> element teaches Joran to use specified action class with the given pattern.
+ Then, we simply declare the given element. The action class will be called and our connection
+ source will be bound to a JNDI context.
+ </p>
+ <p>
+ This is a very powerfull possibility of Joran. If you'd like to read more about Joran, please
+ visit our <a href="../joran.html">introduction to Joran</a>.
+ </p>
+
<p>
The third implementation of <code>ConnectionSource</code> that is shipped with
logback is the <code>JNDIConnectionSource</code>.
@@ -2054,13 +2081,11 @@
application server provides.
</p>
-<div class="source"><pre>
-<connectionSource class="ch.qos.logback.core.db.JNDIConnectionSource">
+<div class="source"><pre><connectionSource class="ch.qos.logback.core.db.JNDIConnectionSource">
<param name="jndiLocation" value="jdbc/MySQLDS" />
<param name="username" value="myUser" />
<param name="password" value="myPassword" />
-</connectionSource>
- </pre></div>
+</connectionSource></pre></div>
<p>
Note that this class will obtain an
@@ -2073,12 +2098,6 @@
</p>
- <p>
- <b>MORE INFO TO ADD HERE JNDI + BindAction + DataSourceCS? Or directly
- with JNDICS??</b>
- </p>
-
-
<h3>SyslogAppender</h3>
<p>
@@ -2176,13 +2195,36 @@
</p>
<p>
- Since the format of a syslog request follows rather strict rules,
+ Since the format of a syslog request follows rather strict rules, there is no layout
+ to be used with <code>SyslogAppender</code>. However, the using the
+ <span class="option">SuffixPattern</span> option lets the user display whatever
+ information she wishes.
</p>
+ <p>
+ Here is a sample configuration using a <code>SyslogAppender</code>.
+ </p>
-
-
-
+<div class="source"><pre><configuration>
+
+ <appender name="SYSLOG"
+ class="ch.qos.logback.classic.net.SyslogAppender">
+ <SyslogHost>remote_home</SyslogHost>
+ <Facility>AUTH</Facility>
+ <SuffixPattern>%-4relative [%thread] %-5level - %msg</SuffixPattern>
+ </appender>
+
+ <root>
+ <level value="debug" />
+ <appender-ref ref="STDOUT" />
+ </root>
+</configuration></pre></div>
+
+ <p>
+ When testing this configuration, one should verify that the remote syslog daemon
+ accepts TCP requests from an external source. Experience shows that syslog daemons
+ usually deny such requests by default.
+ </p>
<h2>Logback Access</h2>
More information about the logback-dev
mailing list