logback-dev
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
August 2007
- 6 participants
- 63 discussions
21 Aug '07
http://bugzilla.qos.ch/show_bug.cgi?id=38
Summary: Display a message when used behind slf4j
Product: logback-general
Version: unspecified
Platform: All
OS/Version: All
Status: NEW
Severity: enhancement
Priority: P1
Component: build-structure
AssignedTo: logback-dev(a)qos.ch
ReportedBy: noreply.sebastien(a)qos.ch
Logback should display a message when it is used as SLF4J's implementation.
We should find a way to tell the user that it's logback that is being used,
without polluting any output.
--
Configure bugmail: http://bugzilla.qos.ch/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
1
1
[Bug 39] New: Introduce concept of MDC as soon ass they are referenced
by bugzilla-daemon@pixie.qos.ch 21 Aug '07
by bugzilla-daemon@pixie.qos.ch 21 Aug '07
21 Aug '07
http://bugzilla.qos.ch/show_bug.cgi?id=39
Summary: Introduce concept of MDC as soon ass they are referenced
Product: logback-site
Version: unspecified
Platform: PC
OS/Version: Windows
Status: NEW
Severity: normal
Priority: P3
Component: Documentation
AssignedTo: logback-dev(a)qos.ch
ReportedBy: xavier.hanin(a)gmail.com
While reading the documentation I had the feeling that MDC was introduced too
late. Indeed, you reference MDC the first time in chapter 2 (as far as I can
say), without giving even an hint on what it is. Several other chapters
reference this concept, but it's only in chapter 7 that I understood what it
is. Maybe adding a short introduction to this concept (and the concept of
Marker) in chapter 2 would help the reader?
--
Configure bugmail: http://bugzilla.qos.ch/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
1
2
http://bugzilla.qos.ch/show_bug.cgi?id=79
Summary: typo on main logback web page
Product: logback-general
Version: unspecified
Platform: All
URL: http://logback.qos.ch/
OS/Version: All
Status: NEW
Severity: trivial
Priority: P1
Component: build-structure
AssignedTo: logback-dev(a)qos.ch
ReportedBy: blakesys(a)yahoo.com
There is a typo on the main logback web page:
"exerience" should be spelled "experience"
--
Configure bugmail: http://bugzilla.qos.ch/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
1
1
svn commit: r1565 - in logback/trunk/logback-site/src/site/pages: . manual
by noreply.ceki@qos.ch 21 Aug '07
by noreply.ceki@qos.ch 21 Aug '07
21 Aug '07
Author: ceki
Date: Tue Aug 21 17:58:52 2007
New Revision: 1565
Modified:
logback/trunk/logback-site/src/site/pages/manual/index_menu.js
logback/trunk/logback-site/src/site/pages/manual/mdc.html
logback/trunk/logback-site/src/site/pages/news.html
Log:
- verified fix for bug 88
Modified: logback/trunk/logback-site/src/site/pages/manual/index_menu.js
==============================================================================
--- logback/trunk/logback-site/src/site/pages/manual/index_menu.js (original)
+++ logback/trunk/logback-site/src/site/pages/manual/index_menu.js Tue Aug 21 17:58:52 2007
@@ -6,6 +6,6 @@
document.write('<p class="menu"><a href="appenders.html"><b>Ch4: Appenders</b></a>');
document.write('<p class="menu"><a href="layouts.html"><b>Ch5: Layouts</b></a>');
document.write('<p class="menu"><a href="filters.html"><b>Ch6: Filter chains</b></a>');
-document.write('<p class="menu"><a href="mdc.html"><b>Ch7: Diagnostic Contexts</b></a>');
+document.write('<p class="menu"><a href="mdc.html"><b>Ch7: Mapped Diagnostic Contexts</b></a>');
document.write('<p class="menu"><a href="contextSelector.html"><b>Ch8: Context Selectors</b></a>');
Modified: logback/trunk/logback-site/src/site/pages/manual/mdc.html
==============================================================================
--- logback/trunk/logback-site/src/site/pages/manual/mdc.html (original)
+++ logback/trunk/logback-site/src/site/pages/manual/mdc.html Tue Aug 21 17:58:52 2007
@@ -8,9 +8,7 @@
</head>
<body>
- <script>
-prefix='../';
-</script>
+<script>prefix='../';</script>
<script src="../templates/header.js"></script>
<div id="left">
<script src="../templates/left.js"></script>
@@ -48,7 +46,7 @@
method in the book <em>Patterns for Logging Diagnostic
Messages</em> in Pattern Languages of Program Design 3, edited by
R. Martin, D. Riehle, and F. Buschmann (Addison-Wesley,
- 1997). Logback leverages a variant of this technique includde in
+ 1997). Logback leverages a variant of this technique included in
the SLF4J API: Mapped Diagnostic Contexts (MDC).
</p>
@@ -106,7 +104,6 @@
import org.slf4j.MDC;
import ch.qos.logback.classic.Logger;
-import ch.qos.logback.classic.MDC;
import ch.qos.logback.classic.PatternLayout;
import ch.qos.logback.core.ConsoleAppender;
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 Tue Aug 21 17:58:52 2007
@@ -33,7 +33,9 @@
<p>Fixed a number of documentation releated bugs, in particular <a
href="http://bugzilla.qos.ch/show_bug.cgi?id=90">bug 90</a> reported
- by Luc Maisonobe.
+ by Luc Maisonobe and <a
+ href="http://bugzilla.qos.ch/show_bug.cgi?id=90">bug 88</a> reported
+ by Sebastian Davids.
</p>
<hr width="80%" align="center" />
1
0
21 Aug '07
http://bugzilla.qos.ch/show_bug.cgi?id=88
Summary: Update Chapter 7 to use org.slf4j.MDC
Product: logback-site
Version: unspecified
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P3
Component: Documentation
AssignedTo: logback-dev(a)qos.ch
ReportedBy: sdavids(a)gmx.de
http://www.slf4j.org/api/org/slf4j/MDC.html
The chapter uses ch.qos.logback.classic.MDC
You cross-reference it from here:
http://www.slf4j.org/manual.html
Therefore, the SLF4J-API usage should be shown and not the "native" LogBack
one.
--
Configure bugmail: http://bugzilla.qos.ch/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
1
2
svn commit: r1564 - in logback/trunk/logback-site/src/site/pages: . manual
by noreply.ceki@qos.ch 21 Aug '07
by noreply.ceki@qos.ch 21 Aug '07
21 Aug '07
Author: ceki
Date: Tue Aug 21 17:44:53 2007
New Revision: 1564
Modified:
logback/trunk/logback-site/src/site/pages/manual/architecture.html
logback/trunk/logback-site/src/site/pages/manual/index.html
logback/trunk/logback-site/src/site/pages/manual/joran.html
logback/trunk/logback-site/src/site/pages/manual/mdc.html
logback/trunk/logback-site/src/site/pages/news.html
Log:
- various documentation improvements
- fixed bug 90 by removing the outdated "configuration" section in chapter 2.
It was a duplicate of a homonym in chapter 3.
Modified: logback/trunk/logback-site/src/site/pages/manual/architecture.html
==============================================================================
--- logback/trunk/logback-site/src/site/pages/manual/architecture.html (original)
+++ logback/trunk/logback-site/src/site/pages/manual/architecture.html Tue Aug 21 17:44:53 2007
@@ -755,466 +755,190 @@
<div class="source"><pre>Object[] paramArray = {newVal, below, above};
logger.debug("Value {} was inserted between {} and {}.", paramArray);</pre></div>
- <a name="Configuration"></a>
- <h3>Configuration</h3>
+
+ <a name="UnderTheHood"></a>
+ <h3>A peak under the hood</h3>
- <p>Inserting log requests into the application code requires a
- fair amount of planning and effort. Observation shows that
- approximately four percent of code is dedicated to
- logging. Consequently, even moderately sized applications will
- contain thousands of logging statements embedded within its
- code. Given their number, it becomes imperative to manage these
- log statements without the need to modify them manually.
- </p>
-
- <script src="../templates/setup.js"></script>
-
- <p>The logback environment is fully configurable programmatically.
- However, it is far more flexible to configure logback using
- configuration files. In logback, configuration files are written
- in XML format.
- </p>
-
- <p>Existing log4j users can convert their
- <em>log4j.properties</em> files to <em>logback.xml</em> using our <a
- href="http://logback.qos.ch/translator/">PropertiesTranslator</a>
- web-application.
- </p>
-
- <p>
- Configuring logback from a XML file is an easy task. One just needs to
- instanciate a <code>JoranConfigurator</code> and pass the configuration
- file, as the following example demonstrate.
- </p>
-
- <em>Example 2.1: Logback configuration from file (<a
- href="../xref/chapter2/MyAppWithConfigFile.html">logback-examples/src/main/java/chapter2/MyAppWithConfigFile.java</a>)</em>
-
-<div class="source"><pre>package chapter2;
-
-//Import SLF4J classes.
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.joran.JoranConfigurator;
-import ch.qos.logback.core.util.StatusPrinter;
-
-public class MyAppWithConfigFile {
-
- public static void main(String[] args) {
- Logger logger = LoggerFactory.getLogger(MyAppWithConfigFile.class);
- LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
-
- JoranConfigurator configurator = new JoranConfigurator();
- configurator.setContext(lc);
- configurator.doConfigure(args[0]);
-
- logger.info("Entering application.");
- Bar bar = new Bar();
- bar.doIt();
- logger.info("Exiting application.");
-
- StatusPrinter.print(lc.getStatusManager());
- }
-}</pre></div>
-
-
- <p>This class defines a logger instance variable.
- It then instantiates a <code>Bar</code>
- object. The <code>Bar</code> class is listed below:
- </p>
+ <p>After we have introduced the essential logback components, we are
+ now ready to describe the steps that the logback framework takes
+ when the user invokes a logger's printing method. Let us now analyze
+ the steps logback takes when the user invokes the
+ <code>info()</code> method of a logger named <em>com.wombat</em>.
+ </p>
- <em>Example 2.2: Sample logging class (<a href="../xref/chapter2/Bar.html">logback-examples/src/main/java/chapter2/Bar.java</a>)</em>
-<div class="source"><pre>package chapter2;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+ <h4>1. Get the filter chain decision</h4>
+
+ <p>If it exists, the <code>TurboFilter</code> chain is
+ invoked. Turbo filters can set a context-wide threshold, or to
+ filter out certain events based on information such as
+ <code>Marker</code>, <code>Level</code>, <code>Logger</code>,
+ message, or the <code>Throwable</code> that are associated with each
+ logging request. If the reply of the filter chain is
+ <code>FilterReply.DENY</code>, then the logging request is
+ dropped. If it is <code>FilterReply.NEUTRAL</code>, then we continue
+ with the next step, i.e. step 2. In case the reply is
+ <code>FilterReply.ACCEPT</code>, we skip the next and directly jump
+ to step 3.
+ </p>
+
+ <h4>2. Apply the Logger level filter</h4>
+
+ <p>At this step, logback compares the effective level of the logger
+ with the level of the request. If the logging request is disabled
+ according to this test, then logback will drop the request without
+ further processing. Otherwise, it proceeds to the next step.
+ </p>
+
+ <h4>3. Create a <code>LoggingEvent</code> object</h4>
+
+ <p>If the request passed the previous filters, logback will create a
+ <code>ch.qos.logback.classic.LoggingEvent</code> object containing
+ all the relevant parameters of the request, such as the logger of
+ the request, the request level, the message itself, the exception
+ that might have been passed along with the request, the current
+ time, the current thread, various data about the class that issued
+ the logging request and the <code>MDC</code>. Note that some of
+ these fields are initialized lazily, that is only when they are
+ actually needed. The <code>MDC</code> is used to decorate the
+ logging request with additional contextual information. MDC is
+ discussed in a <a href="mdc.html">separate chapter</a>.</p>
+
+ <h4>4. Invoking appenders</h4>
+
+ <p>After the creation of a <code>LoggingEvent</code> object, logback
+ invokes the <code>doAppend()</code> methods of all the applicable
+ appenders, that is, the appenders inherited from the logger context.
+ </p>
+
+
+ <p>All appenders shipped with the logback distribution extend the
+ <code>AppenderBase</code> abstract class that implements the
+ <code>doAppend</code> method in a synchronized block ensuring
+ thread-safety. The <code>doAppend()</code> method of
+ <code>AppenderBase</code> also invokes custom filters attached to
+ the appender, if any such filters exist. Custom filters, which can
+ be dynamically attached to any appender, are presented in a <a
+ href="filters.html">separate chapter</a>.
+ </p>
+
+ <h4>5. Formatting the output</h4>
+
+ <p>It is responsibility of the invoked appender to format the
+ logging event. However, some (but not all) appenders delegate the
+ task of formatting the logging event to a layout. A layout formats
+ the <code>LoggingEvent</code> instance and returns the result as a
+ String. Note that some appenders, such as the
+ <code>SocketAppender</code>, do not transform the logging event into
+ a string but serialize it instead. Consequently, they do not
+ require nor have a layout.
+ </p>
-class Bar {
+ <h4>6. Sending out the <code>LoggingEvent</code></h4>
- Logger logger = LoggerFactory.getLogger(Bar.class);
-
- public void doIt() {
- logger.debug("doing my job");
- }
-}</pre></div>
-
- <p><em>MyAppWithConfigFile</em> configures logback by using the
- <code>JoranConfigurator</code>. Joran is a XML interpreter, similar to the
- commons-digester API, but offering several advantages over
- commons-digester. Here, it parses the xml file and runs actions
- depending on the tags it finds. To setup the <code>JoranConfigurator</code>
- properly, we passed the <code>LoggerContext</code>. A
- <code>LoggerContext</code> is the class that creates and manages
- Loggers in logback. It is also the class that implements the
- <code>org.slf4j.ILoggerFactory</code> interface.
- </p>
- <p>
- All
- other classes only need to retrieve an instance of
- <code>org.slf4j.Logger</code> by calling
- <code>LoggerFactory.getLogger()</code>, and then log away. For
- example, the only dependence of the <code>Bar</code> class is on
- <code>org.slf4j.Logger</code> and
- <code>org.slf4j.LoggerFactory</code>. Except code that configures
- logback (if such code exists) user code does not need to depend on
- logback, but on SLF4J instead.
- </p>
-
- <p>Let us configure logback with the
- next XML configuration file:</p>
-
- <em>Example 2.3: Basic configuration with a xml file (logback-examples/src/main/java/chapter2/sample-config-1.xml)</em>
-<div class="source"><pre><?xml version="1.0" encoding="UTF-8" ?>
-
-<configuration>
-
- <appender name="STDOUT"
- class="ch.qos.logback.core.ConsoleAppender">
- <layout class="ch.qos.logback.classic.PatternLayout">
- <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
- </layout>
- </appender>
-
- <root>
- <level value="debug" />
- <appender-ref ref="STDOUT" />
- </root>
-</configuration></pre></div>
-
- <p>We first created an <code>Appender</code>, named <em>STDOUT</em>
- that is of <code>ConsoleAppender</code> type. Its layout is managed
- by a <code>PatternLayout</code>, that uses the value of the <em>pattern</em> parameter
- to generate the logging statement. We then configured the root
- logger, set its level to DEBUG, and linked the newly configured
- <code>ConsoleAppender</code> to the root logger.</p>
-
- <p>Note that we've set the root logger level explicitly. Since root
- logger have a DEBUG level by default we could have omitted this.</p>
-
- <p>To run this example, use this command:</p>
-
-<div class="source"><pre>java chapter2.MyAppWithConfigFile src/main/java/chapter2/sample-config-1.xml</pre></div>
-
- <p>
- Here is what you should see in the console:
- </p>
-
-<div class="source"><pre>18:15:26.718 [main] INFO chapter2.MyAppWithConfigFile - Entering application.
-18:15:26.718 [main] DEBUG chapter2.Bar - doing my job
-18:15:26.718 [main] INFO chapter2.MyAppWithConfigFile - Exiting application.</pre></div>
-
-
- <p>Logging to the console is a rather simple example. Let's now
- configure logback so that it logs on the console, but also to a
- custom file.</p>
-
-<em>Example 2.4: Configuring logback with multiple appenders (logback-examples/src/main/java/chapter2/sample-config-2.xml)</em>
-<div class="source"><pre><?xml version="1.0" encoding="UTF-8" ?>
-
-<configuration>
-
- <appender name="STDOUT"
- class="ch.qos.logback.core.ConsoleAppender">
- <layout class="ch.qos.logback.classic.PatternLayout">
- <pattern>%-4relative [%thread] %-5level %class - %msg%n</pattern>
- </layout>
- </appender>
-
- <appender name="FILE"
- class="ch.qos.logback.core.FileAppender">
- <layout class="ch.qos.logback.classic.PatternLayout">
- <pattern>%-4relative [%thread] %-5level %class - %msg%n</pattern>
- </layout>
- <File>sample-log.txt</File>
- </appender>
-
- <root>
- <level value="debug" />
- <appender-ref ref="STDOUT" />
- <appender-ref ref="FILE" />
- </root>
-</configuration></pre></div>
-
- <p>Now, all the logging statements are directed to the console and
- to a file named <em>sample-log.txt</em>. As you can see, the
- configuration needed to add an Appender is rather small. The options
- are declared as xml element, in either Appender configuration. They are
- read and their value are assigned to the corresponding attribute in
- the specified java class.
- </p>
-
- <p>Suppose that we do not want to see the DEBUG level statements in
- the chapter2 package anymore. This is done by adding the following
- bold xml snippet to the configuration file, right before the
- <code><root></code> element.</p>
-
-<em>Example 2.5: Configuring a specific logger (logback-examples/src/main/java/chapter2/sample-config-3.xml)</em>
-<div class="source"><pre><?xml version="1.0" encoding="UTF-8" ?>
-
-<configuration>
-
- <appender name="STDOUT"
- class="ch.qos.logback.core.ConsoleAppender">
- <layout class="ch.qos.logback.classic.PatternLayout">
- <pattern>%-4relative [%thread] %-5level %class - %msg%n</pattern>
- </layout>
- </appender>
-
- <appender name="FILE"
- class="ch.qos.logback.core.FileAppender">
- <layout class="ch.qos.logback.classic.PatternLayout">
- <pattern>%-4relative [%thread] %-5level %class - %msg%n</pattern>
- </layout>
- <File>sample-log.txt</File>
- </appender>
-<b>
- <logger name="chapter2">
- <level value="info" />
- </logger>
-</b>
- <root>
- <level value="debug" />
- <appender-ref ref="STDOUT" />
- <appender-ref ref="FILE" />
- </root>
-</configuration>
-</pre></div>
-
- <p>Once done, the output is modified to show only statements of level INFO and higher:</p>
-
-<div class="source"><pre>0 [main] INFO chapter2.MyAppWithConfigFile - Entering application.
-0 [main] INFO chapter2.MyAppWithConfigFile - Exiting application.</pre></div>
-
- <p>Note that to obtain these different logging behaviors we did not need to recompile code.
- We could just as easily have logged to a UNIX Syslog daemon, redirected all chapter2 output
- to a log visualizer, or forwarded logging events to a remote logback server,
- which would log according to local server policy, for example by forwarding the log event
- to a second logback server.</p>
-
-
- <p>
- Until now, we always had to specifically load the configuration file and pass it
- to a logback component. However, this step is not necessary in most cases. When logback
- is not configured by instanciating <code>JoranConfigurator</code> objects, it follows
- a simple policy to configure itself.
- </p>
-
- <ul>
- <p>Logback first tries to find a file called <em>logback.xml</em> within the classpath.</p>
- <p>If no such file is found, it checks for another file called <em>logback-test.xml</em>.</p>
- <p>In case none of these files are found, logback configures itself automatically using the
- <a href="../xref/ch/qos/logback/classic/BasicConfigurator.html"><code>BasicConfigurator</code>
- </a> class.</p>
- </ul>
-
- <p>
- The first two checks allow for two environments to cooperate nicely. When the application
- using logback is in development and test process, a special file can be used to setup
- a logging environment that is developer-friendly. Once in production environment, the
- presence of a <em>logback.xml</em> file overrides any <em>logback-test.xml</em>
- configuration.
- </p>
-
- <p>
- The last step is meant to provide very basic logging functionnality in case no configuration
- file is provided. In that case, the logging requests are output to the console.
- </p>
-
- <p>
- Letting logback load its configuration file is the most often used way of
- configuring. It allows the user to only import SLF4J classes in her code.
- </p>
-
- <p>
- The last step of logback's configuration policy permits the use of a minimal
- logging configuration right out of the box. Remember the very first example of
- the introduction. The output was generated due to this feature.
- </p>
+ <p>After the logging event is fully formatted it is sent to its
+ destination by each appender.
+ </p>
-<a name="UnderTheHood"></a>
-<h3>A peak under the hood</h3>
+ <p>
+ Here is a sequence UML diagram to show how everything works. You might
+ want to click on the image to display its bigger version.
+ </p>
-<p>
-After we have introduced the essential logback components, we are now
-ready to describe the steps that the logback framework takes when the user invokes
-a logger's printing method. Let us now analyze the steps logback takes when the
-user invokes the <code>info()</code> method of a
-logger named <em>com.wombat</em>.
-</p>
-
-<h4>1. Get the filter chain decision</h4>
-
-<p>
-Logback's <code>TurboFilter</code> chain is called. These filters may
-be used to prodvide a context-wide threshold, or to filter out certain
-events based on basic logging informations such as <code>Marker</code>,
-<code>Level</code>, <code>Logger</code>, message, or the <code>Throwable</code>
-that was provided in the logging request.
-If the reply of the filter chain is <code>FilterReply.DENY</code>, then the
-logging request is dropped. If it is <code>FilterReply.NEUTRAL</code>, then
-the next step is processed. In case the reply is <code>FilterReply.ACCEPT</code>,
-the next step is skipped and the logging request is directly processed to step 3.
-</p>
-
-<h4>2. Apply the Logger level filter</h4>
-
-<p>
-Logback compares the effective level of the <em>com.wombat</em> logger
-with the level of the request (in this example: <em>INFO</em>). If the logging
-request is disabled, then logback will drop the request without further processing.
-</p>
-
-<h4>3. Create a <code>LoggingEvent</code> object</h4>
-
-<p>
-If the request passed the previous filter, or if the <code>TurboFilter</code> chain
-gave a <code>FilterReply.ACCEPT</code> result, logback will create a
-<code>ch.qos.logback.classic.LoggingEvent</code> object containing all the
-relevant parameters of the request such as the logger of the request, the request
-level, the message, the exception that might have been passed along the request,
-the current time, the current thread, several information about the class that
-issued the logging request and the <code>MDC</code> map. Note that some of these fields
-are initialized lazily, that is only when they are actually needed. The <code>MDC</code> is used to stamp each requests with specific parameters. It is introduced in the <a href="mdc.html">corresponding chapter</a>.</p>
-
-<h4>4. Invoking appenders</h4>
-
-<p>
-After the creation of a <code>LoggingEvent</code> object, logback will proceed
-to invoke the <code>doAppend()</code> methods of all the applicable appenders,
-that is, the appenders inherited from the logger context.
-</p>
-<p>
-All appenders shipped with the logback distribution extend the
-<code>AppenderBase</code> abstract class that implements the
-<code>doAppend</code> method in a synchronized block ensuring thread-safety.
-The <code>doAppend()</code> method of <code>AppenderBase</code> also invokes
-custom filters attached to the appender, if any such filters exist.
-Custom filters, which can be dynamically attached to any appender,
-are presented Chapter 6.
-</p>
-
-<h4>5. Formatting the <code>LoggingEvent</code></h4>
-
-<p>
-It is responsibility of the invoked appender to format the
-logging event. However, most (but not all) appenders delegate
-the task of formatting the logging event to their layout. Their
-layout formats the <code>LoggingEvent</code> instance and returns the
-result as a String. Note that some appenders, such as the
-<code>SocketAppender</code>, do not transform the logging event
-into a string but serialize it instead.
-Consequently, they do not require nor have a layout.
-</p>
-
-<h4>6. Sending out the <code>LoggingEvent</code></h4>
-
-<p>
-After the logging event is fully formatted it is sent to
-its destination by each appender.
-</p>
+ <a href="underTheHood.html"><img src="images/chapter2/underTheHoodSequence2_small.gif" /></a>
+
+ <a name="Performance"></a>
+ <h3>Performance</h3>
+
+ <p>One of the often-cited arguments against logging is its
+ computational cost. This is a legitimate concern as even moderately
+ sized applications can generate thousands of log requests. Much
+ effort is spent measuring and tweaking logging performance.
+ Independently of these efforts, the user should still be aware of
+ the following performance issues.
+ </p>
+
+ <h4>1. Logging performance when logging is turned off entirely</h4>
+
+ <p>
+ You can turn off logging entirely by setting the level of the root logger
+ to <code>Level.OFF</code>, the highest possible level.
+ When logging is turned off entirely,
+ the cost of a log request consists of a method invocation plus an
+ integer comparison. On a 3.2Ghz Pentium D machine this cost is typically
+ around 20 nanoseconds.
+ </p>
+
+ <p>
+ However, any method invocation involves the "hidden" cost of parameter construction.
+ For example, for some logger <em>x</em> writing,
+ </p>
-<p>
-Here is a sequence UML diagram to show how everything works. You might
-want to click on the image to display its bigger version.
-</p>
-
-<a href="underTheHood.html"><img src="images/chapter2/underTheHoodSequence2_small.gif" /></a>
-
-<a name="Performance"></a>
-<h3>Performance</h3>
-
-<p>
-One of the often-cited arguments against logging is its computational cost.
-This is a legitimate concern as even moderately sized applications can generate
-thousands of log requests. Much effort is spent measuring and tweaking
-logging performance.
-Independently of these efforts, the user should still be aware of the following
-performance issues.
-</p>
-
-<h4>1. Logging performance when logging is turned off entirely</h4>
-
-<p>
-You can turn off logging entirely by setting the level of the root logger
-to <code>Level.OFF</code>, the highest possible level.
-When logging is turned off entirely,
-the cost of a log request consists of a method invocation plus an
-integer comparison. On a 3.2Ghz Pentium D machine this cost is typically
-around 20 nanoseconds.
-</p>
-
-<p>
-However, any method invocation involves the "hidden" cost of parameter construction.
-For example, for some logger <em>x</em> writing,
-</p>
-
-<div class="source"><pre>x.debug("Entry number: " + i + "is " + entry[i]);</pre></div>
-
-<p>
-incurs the cost of constructing the message parameter, i.e. converting both
-integer <code>i</code> and <code>entry[i]</code> to a string, and concatenating
-intermediate strings, regardless of whether the message will be logged or not.
-</p>
-
-<p>
-The cost of parameter construction can be quite high and depends on the size
-of the parameters involved. To avoid the cost of parameter construction
-you can use logback's parametrized logging:
-</p>
-
-<div class="source"><pre>x.debug("Entry number: {} is {}", i, entry[i]);</pre></div>
-
-<p>
-This will not incur the cost of parameter construction. Compared to the
-previous call to the <code>debug()</code> method, this call will be faster by
-a very wide margin.
-The message will be formatted only if the request is processed to the appenders.
-If it is processed, the component that formats the message offers high performance
-and does not impact negatively the overall process.
-It respectively takes 2 and 4 microseconds to format a message with 1 and 3 parameters.
-</p>
-
-<p>
-Please notice that, despite the performance points that we just discussed, inserting
-logging statements in tight-loops or very frequently invoked code is a lose-lose proposal
-and will not result in high performance. They will slow down your application even
-if logging is turned off or generate massive (and hence useless) output if enabled.
-</p>
-
-<h4>2. The performance of deciding whether to log or not to log when logging is turned on.</h4>
-
-<p>
-In logback, there is no need to walk the whole logger hierarchy. A logger knows
-its effective level (that is, its level, once level inheritance has been
-taken into consideration) when it is created. Should the level of a parent logger
-be changed, then all child loggers will be contacted and handle the change. Thus, before
-accepting or denying a request based on the effective level, the logger does not need
-to search its ancestors.
-</p>
-
-<p>
-Given this situation, it takes the same time to decide whether to log or not when logging
-is turned on as it takes when logging is turned off.
-</p>
-
-<h4>3. Actual logging (formatting and writing to the output device)</h4>
-
-<p>
-This is the cost of formatting the log output and sending it to its
-target destination. Here again, a serious effort was made to make
-layouts (formatters) perform as quickly as possible.
-The same is true for appenders. The typical cost of actually logging is
-about 9 to 12 microseconds when logging to a file on the local machine.
-It goes up to 1 millisecond when logging to a database on a remote server.
-</p>
-
-<p>
-Although feature-rich, one of the foremost design goals of logback was speed
-of execution, a requirement which is second only to reliability. Some logback
-components have been rewritten many times to improve performance.
-</p>
+ <div class="source"><pre>x.debug("Entry number: " + i + "is " + entry[i]);</pre></div>
+
+ <p>
+ incurs the cost of constructing the message parameter, i.e. converting both
+ integer <code>i</code> and <code>entry[i]</code> to a string, and concatenating
+ intermediate strings, regardless of whether the message will be logged or not.
+ </p>
+
+ <p>The cost of parameter construction can be quite high and depends
+ on the size of the parameters involved. To avoid the cost of
+ parameter construction you can take advantage of SLF4J's parametrized
+ logging:
+ </p>
+
+ <div class="source"><pre>x.debug("Entry number: {} is {}", i, entry[i]);</pre></div>
+
+ <p>
+ This variant will not incur the cost of parameter
+ construction. Compared to the previous call to the
+ <code>debug()</code> method, it will be faster by a very wide
+ margin. The message will be formatted only if the request is
+ processed to the appenders. If it is processed, the component
+ that formats the message offers high performance and does not
+ impact negatively the overall process. It respectively takes 2
+ and 4 microseconds to format a message with 1 and 3 parameters.
+ </p>
+
+ <p> Please notice that, despite the performance points that we just
+ discussed, inserting logging statements in tight-loops or very
+ frequently invoked code is a lose-lose proposal and is likely to
+ result in degraded performance. Logging in tight-loops slow down
+ your application even if logging is turned off, and if logging is
+ turned on, they will generate massive (and hence useless) output.
+ </p>
+
+ <h4>2. The performance of deciding whether to log or not to log when
+ logging is turned on.</h4>
+
+ <p>
+ In logback, there is no need to walk the logger hierarchy. A
+ logger knows its effective level (that is, its level, once level
+ inheritance has been taken into consideration) when it is
+ created. Should the level of a parent logger be changed, then all
+ child loggers are contacted to take notice of the change. Thus,
+ before accepting or denying a request based on the effective
+ level, the logger can make an quasi-instantaneous decision,
+ without needing to consult its ancestors.
+ </p>
+
+
+ <h4>3. Actual logging (formatting and writing to the output device)</h4>
+
+ <p>This is the cost of formatting the log output and sending it to
+ its target destination. Here again, a serious effort was made to
+ make layouts (formatters) perform as quickly as possible. The same
+ is true for appenders. The typical cost of actually logging is about
+ 9 to 12 microseconds when logging to a file on the local machine.
+ It goes up to several milliseconds when logging to a database on a
+ remote server.
+ </p>
+
+ <p>Although feature-rich, one of the foremost design goals of
+ logback was speed of execution, a requirement which is second only
+ to reliability. Some logback components have been rewritten several
+ times to improve performance.
+ </p>
<script src="../templates/footer.js"></script>
Modified: logback/trunk/logback-site/src/site/pages/manual/index.html
==============================================================================
--- logback/trunk/logback-site/src/site/pages/manual/index.html (original)
+++ logback/trunk/logback-site/src/site/pages/manual/index.html Tue Aug 21 17:44:53 2007
@@ -33,7 +33,7 @@
<li><p>appenders</p></li>
<li><p>layouts</p></li>
<li><p>filter chains</p></li>
- <li><p>logback diagnostic contexts</p></li>
+ <li><p>mapped diagnostic contexts</p></li>
<li><p>logback default initialization</p></li>
<li><p>logback in Servlet Containers</p></li>
</ul>
@@ -93,7 +93,7 @@
</p></li>
<li><p>
- <a href="mdc.html"><b>Chapter 7: Diagnostic Context</b></a>
+ <a href="mdc.html"><b>Chapter 7: Mapped Diagnostic Context</b></a>
</p></li>
<li><p>
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 Tue Aug 21 17:44:53 2007
@@ -33,27 +33,41 @@
<script src="../templates/creative.js"></script>
- <script src="../templates/setup.js"></script>
<p>Joran stands for a cold north-west wind which, every now and
- then, blows forcefully on Lake Leman, a.k.a. lake Geneva. Located
- right in the middle of Europe, the Leman lake happens to be the
- continent's largest sweet water reserve.
+ then, blows forcefully on Lake Geneva. Located right in the middle
+ of Europe, the Geneva lake happens to be the continent's largest
+ sweet water reserve.
</p>
<p>In the first part, we start by presenting ways for configuring
logback, with many example configuration scripts. In the <a
href="#Joran">second part</a>, we present Joran, a generic
- configuration framework, that you can put to use in order to
+ configuration framework, that you can put into use in order to
configure your own applications.
</p>
<h2>Configuration in logback</h2>
+ <p>Inserting log requests into the application code requires a
+ fair amount of planning and effort. Observation shows that
+ approximately four percent of code is dedicated to
+ logging. Consequently, even moderately sized applications will
+ contain thousands of logging statements embedded within its
+ code. Given their number, we need powerful tools to manage these
+ log statements.
+ </p>
+
<p>Logback can be configured either programmatically or with
- configuration a script (expressed in XML format). Here are the
- initialization steps that logback follows to try to configure
- itself:
+ configuration a script (expressed in XML format). By the way,
+ existing log4j users can convert their <em>log4j.properties</em>
+ files to <em>logback.xml</em> using our <a
+ href="http://logback.qos.ch/translator/">PropertiesTranslator</a>
+ web-application.
+ </p>
+
+ <p>Let us begin by discussing the initialization steps that
+ logback follows to try to configure itself:
</p>
<ol>
@@ -69,13 +83,16 @@
<li><p>In case neither file is found, logback configures itself
automatically using the <a
href="../xref/ch/qos/logback/classic/BasicConfigurator.html"><code>BasicConfigurator</code></a>
- which will cause output to be directed on the console. </a></p>
- </li>
+ which will cause logging output to be directed on the
+ console.
+ </p>
+ </li>
+
</ol>
<p>The third and last step is meant to provide a default (but very
- basic) logging functionnality in case no configuration file could
- be found.
+ basic) logging functionnality in the absence of a configuration
+ file.
</p>
@@ -84,7 +101,7 @@
won't be included in the artifact produced. Thus, you can use a
different configuration file, namely <em>logback-test.xml</em>
during testing, and another file, namely, <em>logback.xml</em>, in
- production. The same principle applies by analogy for Ant.
+ production. The same principle could apply by analogy for Ant.
</p>
@@ -115,61 +132,78 @@
}
}</pre></div>
- <p>Assuming the default configuration files
- <em>logback-test.xml</em> and <em>logback.xml</em> could not be
- found, logback will default to a minimal configuration hardwired
- to add a <code>ConsoleAppender</code> to the root logger. The
- output is formatted using a <code>PatternLayout</code> set to the
- pattern <em>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -
+ <p>This class defines a static logger variable. It then
+ instantiates a Foo object. The Foo class is listed below:
+ </p>
+
+ <em>Example 3.2: Small class doing logging
+ <a href="../xref/chapter3/Foo.html">(logback-examples/src/main/java/chapter3/Foo.java)</a>
+ </em>
+
+<div class="source"><pre>package chapter3;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class Foo {
+ static final Logger logger = LoggerFactory.getLogger(Foo.class);
+
+ public void doIt() {
+ logger.debug("Did it again!");
+ }
+}</pre></div>
+
+
+
+ <p>In order to run the examples in this chapter, you need to make
+ sure that certain jar files are present on the classpath. Please
+ refer to the <a href="../setup.html">setup page</a> for further
+ details.
+ </p>
+
+
+ <p>Assuming the configuration files <em>logback-test.xml</em> or
+ <em>logback.xml</em> could not be found, logback will default to a
+ minimal configuration hardwired to attaching a
+ <code>ConsoleAppender</code> to the root logger. The output is
+ formatted using a <code>PatternLayout</code> set to the pattern
+ <em>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -
%msg%n</em>. Moreover, by default the root logger is assigned to
the <code>DEBUG</code> level.
</p>
- <p>The output of the command <em>java chapter3.MyApp1</em> should
- be similar to:
+ <p>Thus, the output of the command <em>java chapter3.MyApp1</em>
+ should be similar to:
</p>
<div class="source"><pre>16:06:09.031 [main] INFO chapter3.MyApp1 - Entering application.
16:06:09.046 [main] DEBUG chapter3.Foo - Did it again!
16:06:09.046 [main] INFO chapter3.MyApp1 - Exiting application.</pre></div>
- <p>If you are unable to run this command, then make sure that you
- have set your classpath correctly. The scripts provided in the
- <em>logback-examples/</em> directory should help you get started.
- </p>
-
- <script src="../templates/setup.js"></script>
<p>The <code>MyApp1</code> application links to logback through
calls <code>org.slf4j.LoggerFactory</code> and
<code>org.slf4j.Logger</code> classes, retrieve the loggers it
- wishes to use, and chugs on. For example, the only dependence of
- the <code>Foo</code> class on logback are through
+ wishes to use, and chugs on. Note that the only dependence of the
+ <code>Foo</code> class on logback are through
<code>org.slf4j.LoggerFactory</code> and
<code>org.slf4j.Logger</code> imports. Except code that configures
- logback (if such code exists) user code does not need to depend on
- logback. Given that SLF4J permits the use of any implementation
+ logback (if such code exists) client code does not need to depend
+ on logback. Given that SLF4J permits the use of any implementation
under its abstraction layer, it is rather easy to migrate large
- bodies of code from an implementation to another. Logback also
- ships with a module called <em>log4j-bridge</em> which intercepts
- log4j calls and redirects them to the corresponding logback
- components. With the help of <em>log4j-bridge</em> , you can
- migrate an entire application using log4j to logback just by
- replacing jars. More information about the <em>log4j-bridge</em>
- module can be found on a <a href="../bridge.html">separate
- page</a>.
+ bodies of code from one logging system to another.
</p>
+
<h3>The same with <code>JoranConfigurator</code></h3>
<p>The previous example outputs logging information always in the
same fixed manner. How boring! It takes few easy steps to modify
<code>MyApp1</code> so that the log output can be controlled at
- runtime. Here is a slightly modified version called
+ runtime. Here is a slightly modified application called
<code>MyApp2</code>.
</p>
-<!-- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxx -->
<p><em>Example 3.2: Simple example of
<code>BasicConfigurator</code> usage <a
@@ -235,6 +269,19 @@
</root>
</configuration></pre></div>
+
+ <p>The above configuration file directs logback to create an
+ <code>ConsoleAppender</code> named <em>STDOUT</em> whose output is
+ format is managed by a <code>PatternLayout</code>. The root logger
+ is configued by setting its level to DEBUG and attaching it the
+ previously created <code>ConsoleAppender</code>.
+ </p>
+
+ <p>Note we could have omitted setting the level of the root logger
+ to DEBUG because that is its default value.
+ </p>
+
+
<p>Assuming the current directory is <em>logback-examples</em>, try
running the <code>MyApp2</code> class by issuing the following
command:
@@ -279,11 +326,11 @@
</root>
</configuration></pre></div>
-<p>
-This should cause logback to print internal configuration messages in
-addition to the actual logs. Relaunching the <code>MyApp2</code> application with this
-new configuration file will ouput the following lines:
-</p>
+ <p>This should cause logback to print internal configuration
+ messages in addition to the actual logs. Relaunching the
+ <code>MyApp2</code> application with this new configuration file
+ will ouput the following lines:
+ </p>
<div class="source"><pre>|-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch. \
qos.logback.core.ConsoleAppender]
@@ -298,14 +345,26 @@
16:18:23.687 [main] DEBUG chapter3.Foo - Did it again!
16:18:23.687 [main] INFO chapter3.MyApp2 - Exiting application.</pre></div>
-<p>
-At the end of this output, one will immediately recognize the lines that were printed
-before. But right above stand the printing of logback's <code>Status</code> objects.
-<code>Status</code> objects are logback's powerful error reporting mechanism. They provide
-easy and precise access to logback's internal state.
-</p>
+ <p>At the end of this output, you can recognize the lines that were
+ printed in the previous example. You should also notive the
+ logback's internal messages based on <code>Status</code> objects,
+ logback internal reporting mechanism. <code>Status</code> objects
+ allow easy access to logback's internal state.
+ </p>
+
+ <h3>XML Syntax</h3>
+
+ <p>To obtain these different logging behaviors we do not need to
+ recompile code. You can easily configure logging so that output is
+ directed to a UNIX Syslog daemon, or to a log visualizer, or forward
+ logging events to a remote logback server, which would log according
+ to local server policy, for example by forwarding the log event to a
+ second logback server.</p>
+
+ <p>The remainder of this chapter presents the syntax of the
+ directives allowing all these variations.
+ </p>
-<h3>XML Syntax</h3>
<h4>Configuring Loggers</h4>
Modified: logback/trunk/logback-site/src/site/pages/manual/mdc.html
==============================================================================
--- logback/trunk/logback-site/src/site/pages/manual/mdc.html (original)
+++ logback/trunk/logback-site/src/site/pages/manual/mdc.html Tue Aug 21 17:44:53 2007
@@ -20,7 +20,7 @@
</div>
<div id="content">
- <h1>Chapter 7: Diagnostic Contexts</h1>
+ <h1>Chapter 7: Mapped Diagnostic Context</h1>
<div class="quote">
<p><em>Lock the doors.</em></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 Tue Aug 21 17:44:53 2007
@@ -28,6 +28,17 @@
<hr width="80%" align="center" />
+
+ <h3>20th of August 2007 - Release of version 0.9.8</h3>
+
+ <p>Fixed a number of documentation releated bugs, in particular <a
+ href="http://bugzilla.qos.ch/show_bug.cgi?id=90">bug 90</a> reported
+ by Luc Maisonobe.
+ </p>
+
+ <hr width="80%" align="center" />
+
+
<h3>29th of May 2007 - Release of version 0.9.7</h3>
1
0
[Bug 90] New: inconsistency about logback.xml/logback-test.xml search order in documentation
by bugzilla-daemon@pixie.qos.ch 21 Aug '07
by bugzilla-daemon@pixie.qos.ch 21 Aug '07
21 Aug '07
http://bugzilla.qos.ch/show_bug.cgi?id=90
Summary: inconsistency about logback.xml/logback-test.xml search
order in documentation
Product: logback-site
Version: unspecified
Platform: PC
OS/Version: Linux
Status: NEW
Severity: trivial
Priority: P1
Component: Documentation
AssignedTo: logback-dev(a)qos.ch
ReportedBy: Luc.Maisonobe(a)free.fr
The online user manual is inconsistent in the search order of files logback.xml
and logback-test.xml.
In chapter 2, it reads:
Logback first tries to find a file called logback.xml within the classpath.
If no such file is found, it checks for another file called logback-test.xml.
In chapter 3, it reads:
1. Logback tries to find a file called logback-test.xml in the classpath.
2. If no such file is found, it checks for the file logback.xml.
--
Configure bugmail: http://bugzilla.qos.ch/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
1
1
svn commit: r1563 - logback/trunk/logback-classic/src/main/java/org/slf4j/impl
by noreply.ceki@qos.ch 21 Aug '07
by noreply.ceki@qos.ch 21 Aug '07
21 Aug '07
Author: ceki
Date: Tue Aug 21 13:10:46 2007
New Revision: 1563
Modified:
logback/trunk/logback-classic/src/main/java/org/slf4j/impl/LogbackMDCAdapter.java
Log:
comments to reflecting clarifications in SLF4J's MDC class
Modified: logback/trunk/logback-classic/src/main/java/org/slf4j/impl/LogbackMDCAdapter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/org/slf4j/impl/LogbackMDCAdapter.java (original)
+++ logback/trunk/logback-classic/src/main/java/org/slf4j/impl/LogbackMDCAdapter.java Tue Aug 21 13:10:46 2007
@@ -22,7 +22,7 @@
*
* @author Ceki Gülcü
*/
-public class LogbackMDCAdapter implements MDCAdapter{
+public class LogbackMDCAdapter implements MDCAdapter {
private final ThreadLocal<HashMap<String, String>> threadLocal = new ThreadLocal<HashMap<String, String>>();
@@ -31,7 +31,8 @@
/**
* Put a context value (the <code>val</code> parameter) as identified with
- * the <code>key</code> parameter into the current thread's context map.
+ * the <code>key</code> parameter into the current thread's context map. Note
+ * that contrary to log4j, the <code>val</code> parameter can be null.
*
* <p>
* If the current thread does not have a context map it is created as a side
@@ -42,8 +43,14 @@
* to be certain that the serialization process will operate on the updated map
* and not send a reference to the old map, thus not allowing the remote logback
* component to see the latest changes.
+ *
+ * @throws IllegalArgumentException in case the "key" parameter is null
*/
- public void put(String key, String val) {
+ public void put(String key, String val) throws IllegalArgumentException {
+ if (key == null) {
+ throw new IllegalArgumentException("key cannot be null");
+ }
+
HashMap<String, String> oldMap = threadLocal.get();
HashMap<String, String> newMap = new HashMap<String, String>();
1
0
svn commit: r1562 - logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/db/dialect
by noreply.ceki@qos.ch 16 Aug '07
by noreply.ceki@qos.ch 16 Aug '07
16 Aug '07
Author: ceki
Date: Thu Aug 16 14:16:18 2007
New Revision: 1562
Modified:
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/db/dialect/oracle9i.sql
Log:
minor changes to oracle.sql
Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/db/dialect/oracle9i.sql
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/db/dialect/oracle9i.sql (original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/db/dialect/oracle9i.sql Thu Aug 16 14:16:18 2007
@@ -1,6 +1,6 @@
-- This SQL script creates the required tables by ch.qos.logback.classic.db.DBAppender
--
--- It is intended for Oracle 9idatabases.
+-- It is intended for Oracle 9i databases. Tested on version 9.2
-- The following lines are useful in cleaning any previous tables
@@ -36,8 +36,8 @@
SELECT logging_event_id_seq.NEXTVAL
INTO :NEW.event_id
FROM DUAL;
- END logging_event_id_seq_trig;
-
+ END;
+/
CREATE TABLE logging_event_property
(
1
0
Online report : http://localhost:8090/continuum/servlet/continuum/target/ProjectBuild.vm/vi…
Build statistics:
State: Ok
Previous State: Failed
Started at: Sun, 12 Aug 2007 16:30:43 +0200
Finished at: Sun, 12 Aug 2007 16:31:06 +0200
Total time: 23s
Build Trigger: Forced
Exit code: 0
Building machine hostname: pixie
Operating system : Linux(unknown)
Java version : 1.5.0_08(Sun Microsystems Inc.)
Changes
No files changed
****************************************************************************
Output:
****************************************************************************
[INFO] Scanning for projects...
[INFO] ----------------------------------------------------------------------------
[INFO] Building Logback Classic Module
[INFO] task-segment: [clean, install]
[INFO] ----------------------------------------------------------------------------
[INFO] [clean:clean]
[INFO] Deleting directory /opt/continuum-1.0.3/apps/continuum/working-directory/46/target
[INFO] Deleting directory /opt/continuum-1.0.3/apps/continuum/working-directory/46/target/classes
[INFO] Deleting directory /opt/continuum-1.0.3/apps/continuum/working-directory/46/target/test-classes
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
Compiling 92 source files to /opt/continuum-1.0.3/apps/continuum/working-directory/46/target/classes
[INFO] [retrotranslator:translate {execution: default}]
[INFO] Transforming 93 file(s) from /opt/continuum-1.0.3/apps/continuum/working-directory/46/target/classes to /opt/continuum-1.0.3/apps/continuum/working-directory/46/target/logback-classic-0.9.8-SNAPSHOT-jdk14.jar.
[INFO] Transformation of 93 file(s) completed successfully.
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:testCompile]
Compiling 89 source files to /opt/continuum-1.0.3/apps/continuum/working-directory/46/target/test-classes
[INFO] [surefire:test]
[INFO] Surefire report directory: /opt/continuum-1.0.3/apps/continuum/working-directory/46/target/surefire-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running ch.qos.logback.classic.LoggerContextTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.083 sec
Running ch.qos.logback.classic.pattern.ClassNameAbbreviatorTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.012 sec
Running ch.qos.logback.classic.TurboFilteringInLoggerTest
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.034 sec
Running ch.qos.logback.classic.pattern.MDCConverterTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.013 sec
Running ch.qos.logback.classic.PatternLayoutTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.03 sec
Running ch.qos.logback.classic.MessageFormattingTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.014 sec
Running ch.qos.logback.classic.pattern.ConverterTest
Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.053 sec
Running ch.qos.logback.classic.selector.ContextJNDISelectorTest
MockInitialContextFactory static called
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.087 sec
Running ch.qos.logback.classic.control.TestAction
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.006 sec
Running ch.qos.logback.classic.DynamicLoggerContextTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.761 sec
Running ch.qos.logback.classic.util.InitializationTest
TEST 16:31:01.969 [main] DEBUG c.q.l.c.util.InitializationTest - Hello-didily-odily
TEST 16:31:01.970 [main] DEBUG c.q.l.c.util.InitializationTest - Hello-didily-odily
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.009 sec
Running ch.qos.logback.classic.db.DBAppenderTest
[Server@39e87719]: [Thread[main,5,main]]: checkRunning(false) entered
[Server@39e87719]: [Thread[main,5,main]]: checkRunning(false) exited
[Server@39e87719]: [Thread[main,5,main]]: setDatabaseName(0,test)
[Server@39e87719]: [Thread[main,5,main]]: checkRunning(false) entered
[Server@39e87719]: [Thread[main,5,main]]: checkRunning(false) exited
[Server@39e87719]: [Thread[main,5,main]]: setDatabasePath(0,jdbc:hsqldb:mem:test;sql.enforce_strict_size=true)
[Server@39e87719]: [Thread[main,5,main]]: setTrace(false)
[Server@39e87719]: [Thread[main,5,main]]: setSilent(false)
[Server@39e87719]: [Thread[main,5,main]]: start() entered
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: run() entered
[Server@39e87719]: Initiating startup sequence...
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: server.tls=false
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: server.port=9001
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: server.trace=false
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: server.database.0=jdbc:hsqldb:mem:test;sql.enforce_strict_size=true
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: server.restart_on_shutdown=false
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: server.no_system_exit=true
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: server.silent=false
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: server.default_page=index.html
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: server.address=0.0.0.0
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: server.dbname.0=test
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: server.root=.
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: openServerSocket() entered
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: Got server socket: ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=9001]
[Server@39e87719]: Server socket opened successfully in 4 ms.
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: openServerSocket() exiting
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: openDatabases() entered
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: Opening database: [file:jdbc:hsqldb:mem:test]
[Server@39e87719]: Database [index=0, id=0, db=file:jdbc:hsqldb:mem:test, alias=test] opened sucessfully in 201 ms.
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: openDatabases() exiting
[Server@39e87719]: Startup sequence completed in 207 ms.
[Server@39e87719]: 2007-08-12 16:31:02.228 HSQLDB server 1.8.0 is online
[Server@39e87719]: To close normally, connect and execute SHUTDOWN SQL
[Server@39e87719]: From command line, use [Ctrl]+[C] to abort abruptly
[Server@39e87719]: [Thread[main,5,main]]: start() exiting
1
[Server@39e87719]: [Thread[main,5,main]]: stop() entered
[Server@39e87719]: [Thread[main,5,main]]: releaseServerSocket() entered
[Server@39e87719]: [Thread[main,5,main]]: Releasing server socket: [ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=9001]]
[Server@39e87719]: [Thread[main,5,main]]: releaseServerSocket() exited
[Server@39e87719]: [Thread[main,5,main]]: stop() exiting
[Server@681e2ca7]: [Thread[main,5,main]]: checkRunning(false) entered
[Server@681e2ca7]: [Thread[main,5,main]]: checkRunning(false) exited
[Server@681e2ca7]: [Thread[main,5,main]]: setDatabaseName(0,test)
[Server@681e2ca7]: [Thread[main,5,main]]: checkRunning(false) entered
[Server@681e2ca7]: [Thread[main,5,main]]: checkRunning(false) exited
[Server@681e2ca7]: [Thread[main,5,main]]: setDatabasePath(0,jdbc:hsqldb:mem:test;sql.enforce_strict_size=true)
[Server@681e2ca7]: [Thread[main,5,main]]: setTrace(false)
[Server@681e2ca7]: [Thread[main,5,main]]: setSilent(false)
[Server@681e2ca7]: [Thread[main,5,main]]: start() entered
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: shutdown() entered
[Server@39e87719]: Initiating shutdown sequence...
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: releaseServerSocket() entered
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: releaseServerSocket() exited
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: releaseDatabase(0) entered
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: releaseDatabase(0) exiting
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: releaseDatabase(0) entered
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: releaseDatabase(0) exiting
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: releaseDatabase(0) entered
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: releaseDatabase(0) exiting
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: releaseDatabase(0) entered
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: releaseDatabase(0) exiting
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: releaseDatabase(0) entered
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: releaseDatabase(0) exiting
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: releaseDatabase(0) entered
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: releaseDatabase(0) exiting
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: releaseDatabase(0) entered
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: releaseDatabase(0) exiting
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: releaseDatabase(0) entered
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: releaseDatabase(0) exiting
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: releaseDatabase(0) entered
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: releaseDatabase(0) exiting
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: releaseDatabase(0) entered
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: releaseDatabase(0) exiting
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: HSQLDB Connections @39e87719 destroyed
[Server@39e87719]: Shutdown sequence completed in 2 ms.
[Server@39e87719]: 2007-08-12 16:31:02.424 SHUTDOWN : System.exit() was not called
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: shutdown() exited
[Server@39e87719]: [Thread[HSQLDB Server @39e87719,5,main]]: ServerThread.run() exited
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: run() entered
[Server@681e2ca7]: Initiating startup sequence...
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: server.tls=false
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: server.port=9001
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: server.trace=false
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: server.database.0=jdbc:hsqldb:mem:test;sql.enforce_strict_size=true
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: server.restart_on_shutdown=false
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: server.no_system_exit=true
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: server.silent=false
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: server.default_page=index.html
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: server.address=0.0.0.0
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: server.dbname.0=test
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: server.root=.
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: openServerSocket() entered
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: Got server socket: ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=9001]
[Server@681e2ca7]: Server socket opened successfully in 0 ms.
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: openServerSocket() exiting
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: openDatabases() entered
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: Opening database: [file:jdbc:hsqldb:mem:test]
[Server@681e2ca7]: Database [index=0, id=0, db=file:jdbc:hsqldb:mem:test, alias=test] opened sucessfully in 0 ms.
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: openDatabases() exiting
[Server@681e2ca7]: Startup sequence completed in 8 ms.
[Server@681e2ca7]: 2007-08-12 16:31:02.435 HSQLDB server 1.8.0 is online
[Server@681e2ca7]: To close normally, connect and execute SHUTDOWN SQL
[Server@681e2ca7]: From command line, use [Ctrl]+[C] to abort abruptly
[Server@681e2ca7]: [Thread[main,5,main]]: start() exiting
1
[Server@681e2ca7]: [Thread[main,5,main]]: stop() entered
[Server@681e2ca7]: [Thread[main,5,main]]: releaseServerSocket() entered
[Server@681e2ca7]: [Thread[main,5,main]]: Releasing server socket: [ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=9001]]
[Server@681e2ca7]: [Thread[main,5,main]]: releaseServerSocket() exited
[Server@681e2ca7]: [Thread[main,5,main]]: stop() exiting
[Server@61a116c9]: [Thread[main,5,main]]: checkRunning(false) entered
[Server@61a116c9]: [Thread[main,5,main]]: checkRunning(false) exited
[Server@61a116c9]: [Thread[main,5,main]]: setDatabaseName(0,test)
[Server@61a116c9]: [Thread[main,5,main]]: checkRunning(false) entered
[Server@61a116c9]: [Thread[main,5,main]]: checkRunning(false) exited
[Server@61a116c9]: [Thread[main,5,main]]: setDatabasePath(0,jdbc:hsqldb:mem:test;sql.enforce_strict_size=true)
[Server@61a116c9]: [Thread[main,5,main]]: setTrace(false)
[Server@61a116c9]: [Thread[main,5,main]]: setSilent(false)
[Server@61a116c9]: [Thread[main,5,main]]: start() entered
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: shutdown() entered
[Server@681e2ca7]: Initiating shutdown sequence...
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: releaseServerSocket() entered
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: releaseServerSocket() exited
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: releaseDatabase(0) entered
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: releaseDatabase(0) exiting
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: releaseDatabase(0) entered
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: releaseDatabase(0) exiting
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: releaseDatabase(0) entered
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: releaseDatabase(0) exiting
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: releaseDatabase(0) entered
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: releaseDatabase(0) exiting
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: releaseDatabase(0) entered
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: releaseDatabase(0) exiting
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: releaseDatabase(0) entered
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: releaseDatabase(0) exiting
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: releaseDatabase(0) entered
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: releaseDatabase(0) exiting
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: releaseDatabase(0) entered
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: releaseDatabase(0) exiting
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: releaseDatabase(0) entered
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: releaseDatabase(0) exiting
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: releaseDatabase(0) entered
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: releaseDatabase(0) exiting
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: HSQLDB Connections @681e2ca7 destroyed
[Server@681e2ca7]: Shutdown sequence completed in 1 ms.
[Server@681e2ca7]: 2007-08-12 16:31:02.540 SHUTDOWN : System.exit() was not called
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: shutdown() exited
[Server@681e2ca7]: [Thread[HSQLDB Server @681e2ca7,5,main]]: ServerThread.run() exited
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: run() entered
[Server@61a116c9]: Initiating startup sequence...
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: server.tls=false
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: server.port=9001
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: server.trace=false
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: server.database.0=jdbc:hsqldb:mem:test;sql.enforce_strict_size=true
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: server.restart_on_shutdown=false
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: server.no_system_exit=true
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: server.silent=false
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: server.default_page=index.html
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: server.address=0.0.0.0
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: server.dbname.0=test
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: server.root=.
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: openServerSocket() entered
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: Got server socket: ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=9001]
[Server@61a116c9]: Server socket opened successfully in 0 ms.
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: openServerSocket() exiting
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: openDatabases() entered
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: Opening database: [file:jdbc:hsqldb:mem:test]
[Server@61a116c9]: Database [index=0, id=0, db=file:jdbc:hsqldb:mem:test, alias=test] opened sucessfully in 0 ms.
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: openDatabases() exiting
[Server@61a116c9]: Startup sequence completed in 0 ms.
[Server@61a116c9]: 2007-08-12 16:31:02.548 HSQLDB server 1.8.0 is online
[Server@61a116c9]: To close normally, connect and execute SHUTDOWN SQL
[Server@61a116c9]: From command line, use [Ctrl]+[C] to abort abruptly
[Server@61a116c9]: [Thread[main,5,main]]: start() exiting
1
[Server@61a116c9]: [Thread[main,5,main]]: stop() entered
[Server@61a116c9]: [Thread[main,5,main]]: releaseServerSocket() entered
[Server@61a116c9]: [Thread[main,5,main]]: Releasing server socket: [ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=9001]]
[Server@61a116c9]: [Thread[main,5,main]]: releaseServerSocket() exited
[Server@61a116c9]: [Thread[main,5,main]]: stop() exiting
[Server@16df1832]: [Thread[main,5,main]]: checkRunning(false) entered
[Server@16df1832]: [Thread[main,5,main]]: checkRunning(false) exited
[Server@16df1832]: [Thread[main,5,main]]: setDatabaseName(0,test)
[Server@16df1832]: [Thread[main,5,main]]: checkRunning(false) entered
[Server@16df1832]: [Thread[main,5,main]]: checkRunning(false) exited
[Server@16df1832]: [Thread[main,5,main]]: setDatabasePath(0,jdbc:hsqldb:mem:test;sql.enforce_strict_size=true)
[Server@16df1832]: [Thread[main,5,main]]: setTrace(false)
[Server@16df1832]: [Thread[main,5,main]]: setSilent(false)
[Server@16df1832]: [Thread[main,5,main]]: start() entered
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: shutdown() entered
[Server@61a116c9]: Initiating shutdown sequence...
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: releaseServerSocket() entered
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: releaseServerSocket() exited
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: releaseDatabase(0) entered
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: releaseDatabase(0) exiting
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: releaseDatabase(0) entered
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: releaseDatabase(0) exiting
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: releaseDatabase(0) entered
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: releaseDatabase(0) exiting
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: releaseDatabase(0) entered
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: releaseDatabase(0) exiting
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: releaseDatabase(0) entered
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: releaseDatabase(0) exiting
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: releaseDatabase(0) entered
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: releaseDatabase(0) exiting
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: releaseDatabase(0) entered
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: releaseDatabase(0) exiting
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: releaseDatabase(0) entered
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: releaseDatabase(0) exiting
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: releaseDatabase(0) entered
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: releaseDatabase(0) exiting
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: releaseDatabase(0) entered
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: releaseDatabase(0) exiting
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: HSQLDB Connections @61a116c9 destroyed
[Server@61a116c9]: Shutdown sequence completed in 1 ms.
[Server@61a116c9]: 2007-08-12 16:31:02.660 SHUTDOWN : System.exit() was not called
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: shutdown() exited
[Server@61a116c9]: [Thread[HSQLDB Server @61a116c9,5,main]]: ServerThread.run() exited
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: run() entered
[Server@16df1832]: Initiating startup sequence...
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: server.tls=false
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: server.port=9001
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: server.trace=false
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: server.database.0=jdbc:hsqldb:mem:test;sql.enforce_strict_size=true
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: server.restart_on_shutdown=false
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: server.no_system_exit=true
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: server.silent=false
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: server.default_page=index.html
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: server.address=0.0.0.0
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: server.dbname.0=test
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: server.root=.
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: openServerSocket() entered
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: Got server socket: ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=9001]
[Server@16df1832]: Server socket opened successfully in 0 ms.
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: openServerSocket() exiting
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: openDatabases() entered
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: Opening database: [file:jdbc:hsqldb:mem:test]
[Server@16df1832]: Database [index=0, id=0, db=file:jdbc:hsqldb:mem:test, alias=test] opened sucessfully in 0 ms.
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: openDatabases() exiting
[Server@16df1832]: Startup sequence completed in 0 ms.
[Server@16df1832]: 2007-08-12 16:31:02.661 HSQLDB server 1.8.0 is online
[Server@16df1832]: To close normally, connect and execute SHUTDOWN SQL
[Server@16df1832]: From command line, use [Ctrl]+[C] to abort abruptly
[Server@16df1832]: [Thread[main,5,main]]: start() exiting
1
[Server@16df1832]: [Thread[main,5,main]]: stop() entered
[Server@16df1832]: [Thread[main,5,main]]: releaseServerSocket() entered
[Server@16df1832]: [Thread[main,5,main]]: Releasing server socket: [ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=9001]]
[Server@16df1832]: [Thread[main,5,main]]: releaseServerSocket() exited
[Server@16df1832]: [Thread[main,5,main]]: stop() exiting
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: shutdown() entered
[Server@16df1832]: Initiating shutdown sequence...
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: releaseServerSocket() entered
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: releaseServerSocket() exited
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: releaseDatabase(0) entered
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: releaseDatabase(0) exiting
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: releaseDatabase(0) entered
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: releaseDatabase(0) exiting
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: releaseDatabase(0) entered
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: releaseDatabase(0) exiting
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: releaseDatabase(0) entered
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: releaseDatabase(0) exiting
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: releaseDatabase(0) entered
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: releaseDatabase(0) exiting
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: releaseDatabase(0) entered
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: releaseDatabase(0) exiting
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: releaseDatabase(0) entered
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: releaseDatabase(0) exiting
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: releaseDatabase(0) entered
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: releaseDatabase(0) exiting
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: releaseDatabase(0) entered
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: releaseDatabase(0) exiting
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: releaseDatabase(0) entered
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: releaseDatabase(0) exiting
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: HSQLDB Connections @16df1832 destroyed
[Server@16df1832]: Shutdown sequence completed in 1 ms.
[Server@16df1832]: 2007-08-12 16:31:02.832 SHUTDOWN : System.exit() was not called
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: shutdown() exited
[Server@16df1832]: [Thread[HSQLDB Server @16df1832,5,main]]: ServerThread.run() exited
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.865 sec
Running ch.qos.logback.classic.joran.IncludeFileActionTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.076 sec
Running ch.qos.logback.classic.html.HTMLLayoutTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.609 sec
Running ch.qos.logback.classic.control.RandomUtilTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.044 sec
Running ch.qos.logback.classic.turbo.MarkerFilterTest
LOGBACK: No context given for ch.qos.logback.classic.turbo.MarkerFilter@48e61a35
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 sec
Running ch.qos.logback.classic.net.SocketAppenderTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.59 sec
Running ch.qos.logback.classic.control.ScenarioMakerTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.117 sec
Running ch.qos.logback.classic.net.LoggingEventSerializationTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.016 sec
Running ch.qos.logback.classic.control.CLCTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 sec
Running ch.qos.logback.classic.selector.ContextDetachingSCLTest
About to detach context named toto
No context named toto was found.
About to detach context named titi
TEST 16:31:04.321 [main] WARN root - Shutting down context titi
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.015 sec
Running ch.qos.logback.classic.MDCTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.02 sec
Running ch.qos.logback.classic.BasicLoggerTest
|-WARN in ch.qos.logback.core.read.ListAppender[null] - Attempted to append to non started appender [null].
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.015 sec
Running ch.qos.logback.classic.net.SMTPAppenderTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.267 sec
Running ch.qos.logback.classic.boolex.JaninoEventEvaluatorTest
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.291 sec
Running ch.qos.logback.classic.joran.EvaluatorJoranTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.023 sec
Running ch.qos.logback.classic.spi.ContextListenerTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.006 sec
Running ch.qos.logback.classic.pattern.MarkerConverterTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.018 sec
Running ch.qos.logback.classic.net.JMSQueueAppenderTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.016 sec
Running ch.qos.logback.classic.net.JMSTopicAppenderTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.015 sec
Running ch.qos.logback.classic.net.SyslogAppenderTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.224 sec
Running ch.qos.logback.classic.joran.BasicJoranTest
|-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.read.ListAppender]
|-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [LIST]
|-INFO in ch.qos.logback.core.joran.action.AppenderAction - Popping appender named [LIST] from the object stack
|-INFO in ch.qos.logback.classic.joran.action.LevelAction - root level set to DEBUG
|-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [LIST] to Logger[root]
|-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
|-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.read.ListAppender]
|-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [LIST]
|-INFO in ch.qos.logback.core.joran.action.AppenderAction - Popping appender named [LIST] from the object stack
|-INFO in ch.qos.logback.classic.joran.action.LevelAction - ch.qos.logback.classic.joran level set to INFO
|-INFO in ch.qos.logback.classic.joran.action.LevelAction - root level set to DEBUG
|-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [LIST] to Logger[root]
|-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
|-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Ignoring debug attribute.
|-WARN in ch.qos.logback.classic.joran.action.EvaluatorAction - Assuming default evaluator class [ch.qos.logback.classic.boolex.JaninoEventEvaluator]
|-INFO in ch.qos.logback.classic.joran.action.EvaluatorAction - Adding evaluator named [helloEval] to the object stack
|-INFO in ch.qos.logback.core.joran.action.MatcherAction - matcher named as [m]
|-INFO in ch.qos.logback.core.joran.action.MatcherAction - Popping appender named [m] from the object stack
|-INFO in ch.qos.logback.classic.joran.action.EvaluatorAction - Starting evaluator named [helloEval]
|-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.classic.StringListAppender]
|-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STR_LIST]
|-INFO in ch.qos.logback.core.joran.action.AppenderAction - Popping appender named [STR_LIST] from the object stack
|-INFO in ch.qos.logback.classic.joran.action.LevelAction - root level set to DEBUG
|-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STR_LIST] to Logger[root]
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.039 sec
Results :
Tests run: 153, Failures: 0, Errors: 0, Skipped: 0
[INFO] [jar:jar]
[INFO] Building jar: /opt/continuum-1.0.3/apps/continuum/working-directory/46/target/logback-classic-0.9.8-SNAPSHOT.jar
[INFO] Preparing source:jar
[WARNING] Removing: jar from forked lifecycle, to prevent recursive invocation.
[INFO] No goals needed for project - skipping
[INFO] [source:jar {execution: default}]
[INFO] Building jar: /opt/continuum-1.0.3/apps/continuum/working-directory/46/target/logback-classic-0.9.8-SNAPSHOT-sources.jar
[INFO] [jar:jar {execution: bundle-test-jar}]
[INFO] Building jar: /opt/continuum-1.0.3/apps/continuum/working-directory/46/target/logback-classic-0.9.8-SNAPSHOT.jar
[INFO] [jar:test-jar {execution: bundle-test-jar}]
[INFO] Building jar: /opt/continuum-1.0.3/apps/continuum/working-directory/46/target/logback-classic-0.9.8-SNAPSHOT-tests.jar
[INFO] [install:install]
[INFO] Installing /opt/continuum-1.0.3/apps/continuum/working-directory/46/target/logback-classic-0.9.8-SNAPSHOT.jar to /root/.m2/repository/ch/qos/logback/logback-classic/0.9.8-SNAPSHOT/logback-classic-0.9.8-SNAPSHOT.jar
[INFO] Installing /opt/continuum-1.0.3/apps/continuum/working-directory/46/target/logback-classic-0.9.8-SNAPSHOT-sources.jar to /root/.m2/repository/ch/qos/logback/logback-classic/0.9.8-SNAPSHOT/logback-classic-0.9.8-SNAPSHOT-sources.jar
[INFO] Installing /opt/continuum-1.0.3/apps/continuum/working-directory/46/target/logback-classic-0.9.8-SNAPSHOT-tests.jar to /root/.m2/repository/ch/qos/logback/logback-classic/0.9.8-SNAPSHOT/logback-classic-0.9.8-SNAPSHOT-tests.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 21 seconds
[INFO] Finished at: Sun Aug 12 16:31:06 CEST 2007
[INFO] Final Memory: 21M/191M
[INFO] ------------------------------------------------------------------------
****************************************************************************
1
0