logback-dev
Threads by month
- ----- 2025 -----
- 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
October 2008
- 6 participants
- 250 discussions
Author: ceki
Date: Mon Oct 27 21:56:58 2008
New Revision: 1882
Added:
logback/tags/release_0.9.10/
Log:
tagging 0.9.10
1
0
27th of October 2008 - Release of version 0.9.10
After a lull of 7 months, I am happy to announce the release of
logback version 0.9.10. This version includes both bug fixes as well
as significant enhancements. Here is the list:
In case of errors during initialization, logback-classic now
automatically prints out its internal status. This has been a
frequently requested feature.
The LogbackValve in logback-access (ensuring integration with Tomcat),
will now systematically print its internal status upon initialization,
unless told to be quiet. This greatly helps troubleshooting the
configration of logback-access under Tomcat.
Fixed bug 147 which occured when the user inadvertently attempted to
set the layout of a SyslogAppender. The code now actively prevents
this. Documenation has been updated to reflect the change.
Fixed bug LBCLASSIC-56 originally reported by Michel
Colette. Backslash characters are now correctly interpreted in
filename patterns.
The TurboFilterChain in a LoggerContext is now cleared when the
shutdownAndReset method is called. This problem was reported on May
1st, 2008, by Julia Hu on the logback developpers list.
Fixed issue LBCORE-48. During rollover, compression of large files
would bring all logging to a halt. In this latest release, the rolled
over file is first renamed, which is a relatively fast operation, and
only then is the renamed file compressed asyncronously (in a separate
thread).
Fixed issue LBCORE-11. It is now possible to instruct
TimeBasedRollingPolicy to delete old files, thus controlling then
number of archived log files.
Fixed issue LBCORE-42. If the parent directory of the log file does
not exist, then FileAppender will create it, including any necessary
but nonexistent parent directories.
Fixed LBCORE-15 reported by Klaus Unger and others. DBAppender should
now work with Oracle 9, 10g and 11g, regardless of the JDBC driver
type used.
Fixed issue LBCORE-17 reported by Thorbjørn Ravn Andersen. Logback now
relies on Geronimo JMS API specifications instead of Sun's JMS API
specification, the latter requiring manual installation. With Geronimo
JMS, logback can be built using Maven without needing to manually
install any dependencies.
Fixed issue LBCORE-23. In PatternLayout, parenthesis can be used to
group conversion patterns. It follows that the '(' and ')' carry
special meaning and need to be escaped to be used as literals. This is
now properly documented.
The location of the default configuration file can be specified by a
system property. This feature was requested in LBCORE-32 by Ted
Graham, Matt Fowles, Ivan Biddles and Ralph Goers.
Fixed issue LBCORE-55 reported by Natan Cox. WriterAppender now
outputs its presentation footer and file footer in the the correct
order.
Fixed issue LBCORE-27 reported by Peter Royal. SMTPAppender now
outputs its presentation footer and file footer in the the correct
order.
Fixed issue LBCLASSIC-67 reported by Alessandro Fustini. SMTPAppender
now correctly configures the layout used to format the subject line of
the outgoing email. It no longer appends a lengthy stack trace to the
subject line.
Fixed issue LBCLASSIC-68 reported by Gili Tzabari. In environments
where the TCCL (Thread Context Class Laoder) was not set, logback was
unable to located its default configuraiton files. Logback now uses
the class loader that loaded logback itself to locate its resources
instead of the TCCL. This approach is simpler and deemed to cover more
environments, i.e. more widely applicable.
Fixed issue LBGENERAL-24 reported by Hung Tang. SMTPAppender now
supports plain username/password authentication as well as both the
STARTTLS command and SSL connections.
Fixed issue LBCLASSIC-48 reported by Peter Royal. SyslogAppender now
correctly outputs hours as 0-23 and not as 1-12 as previously.
Added a new TurboFilter called DynamicThresholdFilter which can filter
events depending on MDC values based on a variery of criteria such as
company name, product or the end user. This filter was contributed by
Ralph Goers in LBCLASSIC-53.
You can download logback, including full source code, class files and
documentation on our download page, shown below.
http://logback.qos.ch/download.html
You can receive logback related announcements by subscribing to the
logback announce mailing list. To subscribe to logback-announce list,
please visit the following URL.
http://qos.ch/mailman/listinfo/logback-announce
Enjoy,
--
Ceki Gülcü
Logback: The reliable, generic, fast and flexible logging framework for Java.
http://logback.qos.ch
1
0

svn commit: r1881 - in logback/trunk: . logback-access logback-classic logback-core logback-examples logback-site
by noreply.ceki@qos.ch 27 Oct '08
by noreply.ceki@qos.ch 27 Oct '08
27 Oct '08
Author: ceki
Date: Mon Oct 27 20:46:01 2008
New Revision: 1881
Modified:
logback/trunk/logback-access/pom.xml
logback/trunk/logback-classic/pom.xml
logback/trunk/logback-core/pom.xml
logback/trunk/logback-examples/pom.xml
logback/trunk/logback-site/pom.xml
logback/trunk/pom.xml
Log:
preparing release 0.9.10
Modified: logback/trunk/logback-access/pom.xml
==============================================================================
--- logback/trunk/logback-access/pom.xml (original)
+++ logback/trunk/logback-access/pom.xml Mon Oct 27 20:46:01 2008
@@ -5,7 +5,7 @@
<parent>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-parent</artifactId>
- <version>0.9.10-SNAPSHOT</version>
+ <version>0.9.10</version>
</parent>
<modelVersion>4.0.0</modelVersion>
Modified: logback/trunk/logback-classic/pom.xml
==============================================================================
--- logback/trunk/logback-classic/pom.xml (original)
+++ logback/trunk/logback-classic/pom.xml Mon Oct 27 20:46:01 2008
@@ -5,7 +5,7 @@
<parent>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-parent</artifactId>
- <version>0.9.10-SNAPSHOT</version>
+ <version>0.9.10</version>
</parent>
<modelVersion>4.0.0</modelVersion>
Modified: logback/trunk/logback-core/pom.xml
==============================================================================
--- logback/trunk/logback-core/pom.xml (original)
+++ logback/trunk/logback-core/pom.xml Mon Oct 27 20:46:01 2008
@@ -5,7 +5,7 @@
<parent>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-parent</artifactId>
- <version>0.9.10-SNAPSHOT</version>
+ <version>0.9.10</version>
</parent>
<modelVersion>4.0.0</modelVersion>
Modified: logback/trunk/logback-examples/pom.xml
==============================================================================
--- logback/trunk/logback-examples/pom.xml (original)
+++ logback/trunk/logback-examples/pom.xml Mon Oct 27 20:46:01 2008
@@ -5,7 +5,7 @@
<parent>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-parent</artifactId>
- <version>0.9.10-SNAPSHOT</version>
+ <version>0.9.10</version>
</parent>
<modelVersion>4.0.0</modelVersion>
Modified: logback/trunk/logback-site/pom.xml
==============================================================================
--- logback/trunk/logback-site/pom.xml (original)
+++ logback/trunk/logback-site/pom.xml Mon Oct 27 20:46:01 2008
@@ -3,7 +3,7 @@
<parent>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-parent</artifactId>
- <version>0.9.10-SNAPSHOT</version>
+ <version>0.9.10</version>
</parent>
<modelVersion>4.0.0</modelVersion>
Modified: logback/trunk/pom.xml
==============================================================================
--- logback/trunk/pom.xml (original)
+++ logback/trunk/pom.xml Mon Oct 27 20:46:01 2008
@@ -5,7 +5,7 @@
<groupId>ch.qos.logback</groupId>
<artifactId>logback-parent</artifactId>
- <version>0.9.10-SNAPSHOT</version>
+ <version>0.9.10</version>
<packaging>pom</packaging>
<name>Logback-Parent</name>
1
0

svn commit: r1880 - in logback/trunk/logback-site/src/site/pages: . manual
by noreply.ceki@qos.ch 27 Oct '08
by noreply.ceki@qos.ch 27 Oct '08
27 Oct '08
Author: ceki
Date: Mon Oct 27 20:34:59 2008
New Revision: 1880
Modified:
logback/trunk/logback-site/src/site/pages/manual/filters.html
logback/trunk/logback-site/src/site/pages/manual/joran.html
logback/trunk/logback-site/src/site/pages/news.html
Log:
- rewording in filters.html
- Added blurb on LBCORE-32
- various updates to news.html
Modified: logback/trunk/logback-site/src/site/pages/manual/filters.html
==============================================================================
--- logback/trunk/logback-site/src/site/pages/manual/filters.html (original)
+++ logback/trunk/logback-site/src/site/pages/manual/filters.html Mon Oct 27 20:34:59 2008
@@ -105,10 +105,11 @@
filter.
</p>
- <p>
- The next class is all it takes to implement one's own filter. All it does is accept
- logging events who's message contains the String <em>sample</em>. The filter will give a
- neutral response to any logging event who's message does not contain this String.
+ <p>The next class is all it takes to implement one's own
+ filter. All it does is accept logging events who's message
+ contains the String <em>sample</em>. The filter will give a
+ neutral response to any logging event who's message does not
+ contain this String.
</p>
<em>Example 6.1: Basic custom filter (<a href="../xref/chapter6/SampleFilter.html">logback-examples/src/main/java/chapter6/SampleFilter.java</a>)</em>
@@ -156,17 +157,17 @@
</root>
</configuration></pre></div>
- <p>
- Thanks to Joran, logback's powerful configuration framework, adding
- an option to such a filter is very easy. Just add the corresponding
- getter and setter methods in the class, and you can specify the
- option's value in an xml element, nested within the <em>filter</em> element.
+ <p>Thanks to Joran, logback's powerful configuration framework,
+ adding an option to such a filter is very easy. Just add the
+ corresponding getter and setter methods in the class, and you can
+ specify the option's value in an xml element, nested within the
+ <em>filter</em> element.
</p>
- <p>
- In case you want to implement a filter that provides different behaviour
- depending on the result of its test (say, a filter that would accept or deny
- an event depending on the content of its message), you can extend the
+ <p>In case you want to implement a filter that provides different
+ behaviour depending on the result of its test (say, a filter that
+ would accept or deny an event depending on the content of its
+ message), you can extend the
<a href="../xref/ch/qos/logback/core/filter/AbstractMatcherFilter.html">
<code>AbstractMatcherFilter</code></a> class. It will provide your filter with
two attribute: <em>OnMatch</em> and <em>OnMismatch</em>, that can be configured
@@ -433,32 +434,32 @@
<a name="TurboFilter"></a>
<h3>TurboFilters</h3>
- <p>
- <code>TurboFilter</code> objects all extend the
+ <p><code>TurboFilter</code> objects all extend the
<a href="../xref/ch/qos/logback/classic/turbo/TurboFilter.html">
- <code>TurboFilter</code></a> abstract class. Like the usual filters, they
- use ternary logic to return their evaluation of the logging event.
+ <code>TurboFilter</code></a> abstract class. Like the regular
+ filters, they use ternary logic to return their evaluation of
+ the logging event.
</p>
- <p>
- Overall, they work much like the previously mentionned filters. However,
- there are two main differences between <code>Filter</code> and
- <code>TurboFilter</code> objects.
+ <p>Overall, they work much like the previously mentionned
+ filters. However, there are two main differences between
+ <code>Filter</code> and <code>TurboFilter</code> objects.
</p>
- <p>
- <code>TurboFilter</code> objects are tied to the logging context. Hence, they
- are called not only when a given appender is used, but each and every time a logging
- request is issued. Their scope is wider than appender-attached filters.
+ <p><code>TurboFilter</code> objects are tied to the logging
+ context. Hence, they are called not only when a given appender is
+ used, but each and every time a logging request is issued. Their
+ scope is wider than appender-attached filters.
</p>
<p>More importantly, they are called before the
- <code>LoggingEvent</code> object creation. Their decision is made
- based on some of the logging event's components. They require no
- logging event instantiation, nor any other treatement to provide
- their filtering functionnalities. They are much more performant
- than the usual <code>Filter</code> objects.
- </p>
+ <code>LoggingEvent</code> object creation.
+ <code>TurboFilter</code> objects do not require the instantiation
+ of a logging event to filter a logging request. As such, turbo
+ filters are intended for high performance filtering of logging
+ event, even before they are created.
+ </p>
+
<h3>Implementing your own TurboFilter</h3>
@@ -519,21 +520,20 @@
}
</pre></div>
- <p>
- The <code>TurboFilter</code> above accepts events that contain a specific marker.
- If said marker is not found, then the filter passes the responsability to
- the next filter in the chain.
+ <p>The <code>TurboFilter</code> above accepts events that contain
+ a specific marker. If said marker is not found, then the filter
+ passes the responsability to the next filter in the chain.
</p>
- <p>
- To allow more flexibility, the marker that will be tested can be specified
- in the configuration file. Hence the getter and setter methods. We also implemented
- the <code>start()</code> method, to check that the option has been specified during the
- configuration process.
+ <p>To allow more flexibility, the marker that will be tested can
+ be specified in the configuration file. Hence the getter and
+ setter methods. We also implemented the <code>start()</code>
+ method, to check that the option has been specified during the
+ configuration process.
</p>
- <p>
- Here is a sample configuration that makes use of the newly created <code>TurboFilter</code>.
+ <p>Here is a sample configuration that makes use of our newly
+ created <code>TurboFilter</code>.
</p>
<em>Example 6.7: Basic custom <code>TurboFilter</code> configuration (logback-examples/src/main/java/chapter6/sampleTurboFilterConfig.xml)</em>
@@ -556,18 +556,20 @@
</root>
</configuration></pre></div>
- <p>
- Logback classic ships with several <code>TurboFilter</code> classes ready for use.
- The
- <a href="../xref/ch/qos/logback/classic/turbo/MDCFilter.html"><code>MDCFilter</code></a>
- check the presence of a given value in the MDC. On the other hand,
- <a href="../xref/ch/qos/logback/classic/turbo/MarkerFilter.html"><code>MarkerFilter</code></a>
- checks for the presence of a specific marker associated with the logging request.
+ <p>Logback classic ships with several <code>TurboFilter</code>
+ classes ready for use. The <a
+ href="../xref/ch/qos/logback/classic/turbo/MDCFilter.html"><code>MDCFilter</code></a>
+ check the presence of a given value in the MDC whereas <a
+ href="../apidocs/ch/qos/logback/classic/turbo/DynamicThresholdFilter.html"><code>DynamicThresholdFilter</code></a>
+ allows filtering based on MDC key/level thresold associations. On
+ the other hand, <a
+ href="../xref/ch/qos/logback/classic/turbo/MarkerFilter.html"><code>MarkerFilter</code></a>
+ checks for the presence of a specific marker associated with the
+ logging request.
</p>
- <p>
- Here is a sample configuration, using both <code>MDCFilter</code> and
- <code>MarkerFilter</code>.
+ <p>Here is a sample configuration, using both
+ <code>MDCFilter</code> and <code>MarkerFilter</code>.
</p>
<em>Example 6.8: <code>MDCFilter</code> and <code>MarkerFilter</code>
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 Mon Oct 27 20:34:59 2008
@@ -328,6 +328,18 @@
printed.
</p>
+ <h3>Specifying the location of the default configuration file as a
+ system property</h3>
+
+ <p>If you wish, you can specify the location of the default
+ configuration file with a system property named
+ <code>logback.configurationFile</code>. The value of the this
+ property can be a URL, a resource on the class path or a path to a
+ file external to the application.
+ </p>
+
+ <p class="source">java <b>-Dlogback.configurationFile=/path/to/config.xml</b> chapter3.MyApp1</p>
+
<h3>Invoking <code>JoranConfigurator</code> directly</h3>
<p>Logback relies on a configuration library called Joran which is
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 Mon Oct 27 20:34:59 2008
@@ -29,7 +29,7 @@
<hr width="80%" align="center" />
- <h3>XXth of October 2008 - Release of version 0.9.10</h3>
+ <h3>27th of October 2008 - Release of version 0.9.10</h3>
<p>In case of errors during initialization, logback-classic now
<em>automatically</em> prints out its internal status. This has been
@@ -82,6 +82,11 @@
directories.
</p>
+ <p>Fixed <a href="http://jira.qos.ch/browse/LBCORE-15">LBCORE-15</a>
+ reported by Klaus Unger and others. DBAppender should now work with
+ Oracle 9, 10g and 11g, regardless of the JDBC driver type used.
+ </p>
+
<p>Fixed issue <a
href="http://jira.qos.ch/browse/LBCORE-17">LBCORE-17</a> reported by
Thorbjørn Ravn Andersen. Logback now relies on Geronimo JMS
@@ -99,7 +104,10 @@
documented.
</p>
- <p><a href="http://jira.qos.ch/browse/LBCORE-32">LBCORE-32</a>
+ <p>The location of the default configuration file can be specified
+ by a system property. This feature was requested in <a
+ href="http://jira.qos.ch/browse/LBCORE-32">LBCORE-32</a> by Ted
+ Graham, Matt Fowles, Ivan Biddles and Ralph Goers.
</p>
<p>Fixed issue <a
@@ -151,11 +159,13 @@
as 0-23 and not as 1-12 as previously.
</p>
- <p><a href="http://jira.qos.ch/browse/LBCLASSIC-53">LBCLASSIC-53</a>
+ <p>Added a new TurboFilter called DynamicThresholdFilter which can
+ filter events depending on MDC values based on a variery of criteria
+ such as company name, product or the end user. This filter was
+ contributed by Ralph Goers in <a
+ href="http://jira.qos.ch/browse/LBCLASSIC-53">LBCLASSIC-53</a>.
</p>
-
-
<hr width="80%" align="center" />
1
0
Add MDC Level Filtering
-----------------------
Key: LBCLASSIC-53
URL: http://jira.qos.ch/browse/LBCLASSIC-53
Project: logback-classic
Issue Type: New Feature
Environment: All
Reporter: Ralph Goers
Assignee: Logback dev list
Attachments: MDCLevelFilter.zip
The company I work for is an Application Service Provider. Requests to the same software running in a single JVM might be on behalf of any one of these companies. In addition, our middle tier contains services that my be called from several different products and are run on behalf of a user of one of these companies. Operationally, we require the ability to be able to filter based on company, product, possibly the end user or several other criteria.
The TurboFilter provided allows individual values for keys in the MDC to be associated with a logging level. So if the MDC contains a key for the company the TurboFilter can be configured with the name of the company and the corresponding logging level. So if CompanyA's level is set to debug while the default level is error, only debug events for CompanyA will be passed on.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.qos.ch/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
4
10

svn commit: r1879 - logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/joran
by noreply.ceki@qos.ch 27 Oct '08
by noreply.ceki@qos.ch 27 Oct '08
27 Oct '08
Author: ceki
Date: Mon Oct 27 19:17:16 2008
New Revision: 1879
Modified:
logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/joran/PackageTest.java
Log:
- JoranConfiguratorTest is a JUnit4 test. Adapt accordingly.
Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/joran/PackageTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/joran/PackageTest.java (original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/joran/PackageTest.java Mon Oct 27 19:17:16 2008
@@ -15,7 +15,7 @@
public static Test suite() {
TestSuite suite = new TestSuite();
- suite.addTestSuite(JoranConfiguratorTest.class);
+ suite.addTest(new JUnit4TestAdapter(JoranConfiguratorTest.class));
suite.addTestSuite(EvaluatorJoranTest.class);
return suite;
}
1
0

svn commit: r1878 - in logback/trunk/logback-classic/src: main/java/ch/qos/logback/classic/turbo test/input/joran test/java/ch/qos/logback/classic/joran
by noreply.ceki@qos.ch 27 Oct '08
by noreply.ceki@qos.ch 27 Oct '08
27 Oct '08
Author: ceki
Date: Mon Oct 27 19:09:28 2008
New Revision: 1878
Added:
logback/trunk/logback-classic/src/test/input/joran/turboDynamicThreshold2.xml
Modified:
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/DynamicThresholdFilter.java
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MDCFilter.java
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MDCValueLevelPair.java
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MarkerFilter.java
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MatchingFilter.java
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/TurboFilter.java
logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/joran/JoranConfiguratorTest.java
Log:
Related to LBCLASSIC-53
- In DynamicThresholdFilter, renamed the OnMatch as OnHigherOrEquals,
and OnMismatch as OnLower, while the new names may not be perfect,
I think they are better than the old ones.
- updated javadocs
- added copyright notice
Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/DynamicThresholdFilter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/DynamicThresholdFilter.java (original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/DynamicThresholdFilter.java Mon Oct 27 19:09:28 2008
@@ -10,60 +10,136 @@
import java.util.HashMap;
/**
- * This filter will allow you to associate threshold levels to values found
- * in the MDC. The threshold/value associations are looked up in MDC using
- * a key. This key can be any value specified by the user.
- *
- * <p>TO BE DISCUSSED...
- *
- * <p>This provides very efficient course grained filtering based on things like a
- * product name or a company name that would be associated with requests as they
- * are being processed.
+ * This filter allows for efficient course grained filtering based on criteria
+ * such as product name or company name that would be associated with requests
+ * as they are processed.
*
- * The example configuration below illustrates how debug logging could be
- * enabled for only individual users.
+ * <p> This filter will allow you to associate threshold levels to a key put in
+ * the MDC. This key can be any value specified by the user. Furthermore, you
+ * can pass MDC value and level threshold associations, which are then looked up
+ * to find the level threshold to apply to the current logging request. If no
+ * level threshold could be found, then a 'default' value specified by the user
+ * is applied. We call this value 'levelAssociatedWithMDCValue'.
+ *
+ * <p> If 'levelAssociatedWithMDCValue' is higher or equal to the level of the
+ * current logger request, the
+ * {@link #decide(Marker, Logger, Level, String, Object[], Throwable) decide()}
+ * method returns the value of {@link #getOnHigherOrEqual() onHigherOrEqual},
+ * if it is lower then the value of {@link #getOnLower() onLower} is returned.
+ * Both 'onHigherOrEqual' and 'onLower' can be set by the user. By default,
+ * 'onHigherOrEqual' is set to NEUTRAL and 'onLower' is set to DENY. Thus, if
+ * the current logger request's level is lower than
+ * 'levelAssociatedWithMDCValue', then the request is denied, and if it is
+ * higher or equal, then this filter decides NEUTRAL letting subsequent filters
+ * to make the decision on the fate of the logging request.
+ *
+ * <p> The example below illustrates how logging could be enabled for only
+ * individual users. In this example all events for logger names matching
+ * "com.mycompany" will be logged if they are for 'user1' and at a level higher
+ * than equals to DEBUG, and for 'user2' if they are at a level higher than or
+ * equal to TRACE, and for other users only if they are at level ERROR or
+ * higher. Events issued by loggers other than "com.mycompany" will only be
+ * logged if they are at level ERROR or higher since that is all the root logger
+ * allows.
+ *
+ * <pre>
+ * <configuration>
+ * <appender name="STDOUT"
+ * class="ch.qos.logback.core.ConsoleAppender">
+ * <layout class="ch.qos.logback.classic.PatternLayout">
+ * <Pattern>TEST %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
+ * </layout>
+ * </appender>
+ *
+ * <turboFilter class="ch.qos.logback.classic.turbo.DynamicThresholdFilter">
+ * <Key>userId</Key>
+ * <DefaultTheshold>ERROR</DefaultTheshold>
+ * <MDCValueLevelPair>
+ * <value>user1</value>
+ * <level>DEBUG</level>
+ * </MDCValueLevelPair>
+ * <MDCValueLevelPair>
+ * <value>user2</value>
+ * <level>TRACE</level>
+ * </MDCValueLevelPair>
+ * </turboFilter>
+ *
+ * <logger name="com.mycompany" level="TRACE"/>
+ *
+ * <root level="ERROR" >
+ * <appender-ref ref="STDOUT" />
+ * </root>
+ * </configuration>
+ * </pre>
+ *
+ * In the next configuration events from user1 and user2 will be logged
+ * regardless of the logger levels. Events for other users and records without a
+ * userid in the MDC will be logged if they are ERROR level messages. With this
+ * configuration, the root level is never checked since DynamicThresholdFilter
+ * will either accept or deny all records.
*
* <pre>
- * <turboFilter class="ch.qos.logback.classic.turbo.DynamicThresholdFilter">
- * <Key>userId</Key>
- * <DefaultTheshold>ERROR</DefaultTheshold>
- * <MDCValueLevelPair>
- * <value>user1</value>
- * <level>DEBUG</level>
- * </MDCValueLevelPair>
- * <MDCValueLevelPair>
- * <value>user2</value>
- * <level>TRACE</level>
- * </MDCValueLevelPair>
- * </turboFilter>
+ * <configuration>
+ * <appender name="STDOUT"
+ * class="ch.qos.logback.core.ConsoleAppender">
+ * <layout class="ch.qos.logback.classic.PatternLayout">
+ * <Pattern>TEST %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
+ * </layout>
+ * </appender>
+ *
+ * <turboFilter class="ch.qos.logback.classic.turbo.DynamicThresholdFilter">
+ * <Key>userId</Key>
+ * <DefaultTheshold>ERROR</DefaultTheshold>
+ * <OnHigherOrEqual>ACCEPT</OnHigherOrEqual>
+ * <OnLower>DENY</OnLower>
+ * <MDCValueLevelPair>
+ * <value>user1</value>
+ * <level>TRACE</level>
+ * </MDCValueLevelPair>
+ * <MDCValueLevelPair>
+ * <value>user2</value>
+ * <level>TRACE</level>
+ * </MDCValueLevelPair>
+ * </turboFilter>
+ *
+ * <root level="DEBUG" >
+ * <appender-ref ref="STDOUT" />
+ * </root>
+ * </configuration>
* </pre>
*
* @author Raplh Goers
- * @author Ceki Gulcu
+ * @author Ceki Gülcü
*/
public class DynamicThresholdFilter extends TurboFilter {
private Map<String, Level> valueLevelMap = new HashMap<String, Level>();
private Level defaultThreshold = Level.ERROR;
private String key;
+ private FilterReply onHigherOrEqual = FilterReply.NEUTRAL;
+ private FilterReply onLower = FilterReply.DENY;
+
/**
- * The MDC key that will be filtered against
+ * Get the MDC key whose value will be used as a level threshold
*
- * @param key
- * The name of the key.
+ * @return the name of the MDC key.
+ */
+ public String getKey() {
+ return this.key;
+ }
+
+ /**
+ * @see setKey
*/
public void setKey(String key) {
this.key = key;
}
/**
+ * Get the default threshold value when the MDC key is not set.
*
- * @return The name of the key being filtered
+ * @return the default threshold value in the absence of a set MDC key
*/
- public String getKey() {
- return this.key;
- }
-
public Level getDefaultThreshold() {
return defaultThreshold;
}
@@ -73,6 +149,34 @@
}
/**
+ * Get the FilterReply when the effective level is higher or equal to the
+ * level of current logging request
+ *
+ * @return FilterReply
+ */
+ public FilterReply getOnHigherOrEqual() {
+ return onHigherOrEqual;
+ }
+
+ public void setOnHigherOrEqual(FilterReply onHigherOrEqual) {
+ this.onHigherOrEqual = onHigherOrEqual;
+ }
+
+ /**
+ * Get the FilterReply when the effective level is lower than the level of
+ * current logging request
+ *
+ * @return FilterReply
+ */
+ public FilterReply getOnLower() {
+ return onLower;
+ }
+
+ public void setOnLower(FilterReply onLower) {
+ this.onLower = onLower;
+ }
+
+ /**
* Add a new MDCValuePair
*/
public void addMDCValueLevelPair(MDCValueLevelPair mdcValueLevelPair) {
@@ -96,6 +200,15 @@
}
/**
+ * This method first finds the MDC value for 'key'. It then finds the level
+ * threshold associated with this MDC value from the list of MDCValueLevelPair
+ * passed to this filter. This value is stored in a variable called
+ * 'levelAssociatedWithMDCValue'. If it null, then it is set to the
+ *
+ * @{link #defaultThreshold} value.
+ *
+ * If no such value exists, then
+ *
*
* @param marker
* @param logger
@@ -103,16 +216,18 @@
* @param s
* @param objects
* @param throwable
- * @return
+ *
+ * @return FilterReply - this filter's decision
*/
@Override
public FilterReply decide(Marker marker, Logger logger, Level level,
String s, Object[] objects, Throwable throwable) {
+
String mdcValue = MDC.get(this.key);
- if(!isStarted()) {
+ if (!isStarted()) {
return FilterReply.NEUTRAL;
}
-
+
Level levelAssociatedWithMDCValue = null;
if (mdcValue != null) {
levelAssociatedWithMDCValue = valueLevelMap.get(mdcValue);
@@ -121,9 +236,9 @@
levelAssociatedWithMDCValue = defaultThreshold;
}
if (level.isGreaterOrEqual(levelAssociatedWithMDCValue)) {
- return FilterReply.NEUTRAL;
+ return onHigherOrEqual;
} else {
- return FilterReply.DENY;
+ return onLower;
}
}
}
Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MDCFilter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MDCFilter.java (original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MDCFilter.java Mon Oct 27 19:09:28 2008
@@ -1,3 +1,12 @@
+/**
+ * Logback: the generic, reliable, fast and flexible logging framework.
+ *
+ * Copyright (C) 2000-2008, QOS.ch
+ *
+ * This library is free software, you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation.
+ */
package ch.qos.logback.classic.turbo;
import org.slf4j.MDC;
@@ -10,18 +19,21 @@
/**
* This class allows output for a given MDC value.
*
+ * <p>
* When the given value is identified by this TubroFilter,
* the reply is based on the OnMatch option.
* The information is taken from the MDC. For this TurboFilter to work,
* one must set the key that will be used to
* access the information in the MDC.
*
+ * <p>
* To allow output for the value, set the OnMatch option
* to ACCEPT. To disable output for the given value, set
* the OnMatch option to DENY.
*
+ * <p>
* By default, values of the OnMatch and OnMisMatch
- * options are NEUTRAL.
+ * options are set to NEUTRAL.
*
*
* @author Ceki Gülcü
Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MDCValueLevelPair.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MDCValueLevelPair.java (original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MDCValueLevelPair.java Mon Oct 27 19:09:28 2008
@@ -1,3 +1,12 @@
+/**
+ * Logback: the generic, reliable, fast and flexible logging framework.
+ *
+ * Copyright (C) 2000-2008, QOS.ch
+ *
+ * This library is free software, you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation.
+ */
package ch.qos.logback.classic.turbo;
import ch.qos.logback.classic.Level;
@@ -7,7 +16,7 @@
* Bean pairing an MDC value with a log level.
*
* @author Raplh Goers
- * @author Ceki Gulcu
+ * @author Ceki Gülcü
*/
public class MDCValueLevelPair {
private String value;
Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MarkerFilter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MarkerFilter.java (original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MarkerFilter.java Mon Oct 27 19:09:28 2008
@@ -1,3 +1,12 @@
+/**
+ * Logback: the generic, reliable, fast and flexible logging framework.
+ *
+ * Copyright (C) 2000-2008, QOS.ch
+ *
+ * This library is free software, you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation.
+ */
package ch.qos.logback.classic.turbo;
import org.slf4j.Marker;
@@ -13,11 +22,11 @@
*/
public class MarkerFilter extends MatchingFilter {
- Marker marker2Match;
+ Marker markerToMatch;
@Override
public void start() {
- if(marker2Match != null) {
+ if(markerToMatch != null) {
super.start();
} else {
addError("The marker property must be set for ["+getName()+"]");
@@ -34,7 +43,7 @@
return onMismatch;
}
- if(marker2Match.contains(marker)) {
+ if(markerToMatch.contains(marker)) {
return onMatch;
} else {
return onMismatch;
@@ -44,11 +53,11 @@
/**
* The marker to match in the event.
*
- * @param marker2Match
+ * @param markerToMatch
*/
public void setMarker(String markerStr) {
if(markerStr != null) {
- this.marker2Match = MarkerFactory.getMarker(markerStr);
+ this.markerToMatch = MarkerFactory.getMarker(markerStr);
}
}
}
Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MatchingFilter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MatchingFilter.java (original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MatchingFilter.java Mon Oct 27 19:09:28 2008
@@ -1,3 +1,12 @@
+/**
+ * Logback: the generic, reliable, fast and flexible logging framework.
+ *
+ * Copyright (C) 2000-2008, QOS.ch
+ *
+ * This library is free software, you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation.
+ */
package ch.qos.logback.classic.turbo;
import ch.qos.logback.core.spi.FilterReply;
Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/TurboFilter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/TurboFilter.java (original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/TurboFilter.java Mon Oct 27 19:09:28 2008
@@ -1,3 +1,12 @@
+/**
+ * Logback: the generic, reliable, fast and flexible logging framework.
+ *
+ * Copyright (C) 2000-2008, QOS.ch
+ *
+ * This library is free software, you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation.
+ */
package ch.qos.logback.classic.turbo;
import org.slf4j.Marker;
Added: logback/trunk/logback-classic/src/test/input/joran/turboDynamicThreshold2.xml
==============================================================================
--- (empty file)
+++ logback/trunk/logback-classic/src/test/input/joran/turboDynamicThreshold2.xml Mon Oct 27 19:09:28 2008
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE configuration>
+
+<configuration>
+
+ <turboFilter
+ class="ch.qos.logback.classic.turbo.DynamicThresholdFilter">
+ <Key>userId</Key>
+ <DefaultThreshold>ERROR</DefaultThreshold>
+ <OnMatch>ACCEPT</OnMatch>
+ <OnMismatch>DENY</OnMismatch>
+ <MDCValueLevelPair>
+ <value>user1</value>
+ <level>DEBUG</level>
+ </MDCValueLevelPair>
+ <MDCValueLevelPair>
+ <value>user2</value>
+ <level>TRACE</level>
+ </MDCValueLevelPair>
+
+ </turboFilter>
+
+
+ <appender name="LIST"
+ class="ch.qos.logback.core.read.ListAppender">
+ </appender>
+
+ <root>
+ <level value="DEBUG" />
+ <appender-ref ref="LIST" />
+ </root>
+</configuration>
Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/joran/JoranConfiguratorTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/joran/JoranConfiguratorTest.java (original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/joran/JoranConfiguratorTest.java Mon Oct 27 19:09:28 2008
@@ -1,16 +1,19 @@
/**
- * LOGBack: the generic, reliable, fast and flexible logging framework.
- *
- * Copyright (C) 1999-2006, QOS.ch
- *
- * This library is free software, you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation.
+ * Logback: the generic, reliable, fast and flexible logging framework.
+ *
+ * Copyright (C) 2000-2008, QOS.ch
+ *
+ * This library is free software, you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation.
*/
package ch.qos.logback.classic.joran;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import org.junit.Test;
import org.slf4j.MDC;
import ch.qos.logback.classic.Level;
@@ -26,20 +29,22 @@
import ch.qos.logback.core.read.ListAppender;
import ch.qos.logback.core.util.StatusPrinter;
-public class JoranConfiguratorTest extends TestCase {
+public class JoranConfiguratorTest {
- public JoranConfiguratorTest(String name) {
- super(name);
- }
-
- public void testSimpleList() throws JoranException {
+ LoggerContext loggerContext = new LoggerContext();
+ Logger logger = loggerContext.getLogger(this.getClass().getName());
+ Logger root = loggerContext.getLogger(LoggerContext.ROOT_NAME);
+
+ void configure(String file) throws JoranException {
JoranConfigurator jc = new JoranConfigurator();
- LoggerContext loggerContext = new LoggerContext();
jc.setContext(loggerContext);
- jc.doConfigure(TeztConstants.TEST_DIR_PREFIX + "input/joran/simpleList.xml");
+ jc.doConfigure(file);
+ }
+
+ @Test
+ public void testSimpleList() throws JoranException {
+ configure(TeztConstants.TEST_DIR_PREFIX + "input/joran/simpleList.xml");
- //StatusPrinter.print(loggerContext.getStatusManager());
-
Logger logger = loggerContext.getLogger(this.getClass().getName());
Logger root = loggerContext.getLogger(LoggerContext.ROOT_NAME);
ListAppender listAppender = (ListAppender) root.getAppender("LIST");
@@ -50,158 +55,152 @@
LoggingEvent le = (LoggingEvent) listAppender.list.get(0);
assertEquals(msg, le.getMessage());
}
-
- public void testLevel() throws JoranException {
- JoranConfigurator jc = new JoranConfigurator();
- LoggerContext loggerContext = new LoggerContext();
- jc.setContext(loggerContext);
- jc.doConfigure(TeztConstants.TEST_DIR_PREFIX + "input/joran/simpleLevel.xml");
- Logger logger = loggerContext.getLogger(this.getClass().getName());
- Logger root = loggerContext.getLogger(LoggerContext.ROOT_NAME);
+ @Test
+ public void testLevel() throws JoranException {
+ configure(TeztConstants.TEST_DIR_PREFIX + "input/joran/simpleLevel.xml");
ListAppender listAppender = (ListAppender) root.getAppender("LIST");
assertEquals(0, listAppender.list.size());
String msg = "hello world";
logger.debug(msg);
assertEquals(0, listAppender.list.size());
}
-
+
+ @Test
public void testStatusListener() throws JoranException {
- JoranConfigurator jc = new JoranConfigurator();
- LoggerContext loggerContext = new LoggerContext();
- jc.setContext(loggerContext);
- jc.doConfigure(TeztConstants.TEST_DIR_PREFIX + "input/joran/statusListener.xml");
-
+ configure(TeztConstants.TEST_DIR_PREFIX + "input/joran/statusListener.xml");
+
StatusPrinter.print(loggerContext);
}
-
+
+ @Test
public void testEval() throws JoranException {
- JoranConfigurator jc = new JoranConfigurator();
- LoggerContext loggerContext = new LoggerContext();
- jc.setContext(loggerContext);
- jc.doConfigure(TeztConstants.TEST_DIR_PREFIX + "input/joran/callerData.xml");
+ configure(TeztConstants.TEST_DIR_PREFIX + "input/joran/callerData.xml");
- //StatusPrinter.print(loggerContext);
-
- Logger logger = loggerContext.getLogger(this.getClass().getName());
String msg = "hello world";
logger.debug("toto");
logger.debug(msg);
-
- StringListAppender slAppender = (StringListAppender) loggerContext.getLogger("root").getAppender("STR_LIST");
+
+ StringListAppender slAppender = (StringListAppender) loggerContext
+ .getLogger("root").getAppender("STR_LIST");
assertNotNull(slAppender);
assertEquals(2, slAppender.strList.size());
assertTrue(slAppender.strList.get(0).contains(" DEBUG - toto"));
-
+
String str1 = slAppender.strList.get(1);
assertTrue(str1.contains("Caller+0"));
assertTrue(str1.contains(" DEBUG - hello world"));
}
-
+
+ @Test
public void testTurboFilter() throws JoranException {
- //Although this test uses turbo filters, it only checks
- //that Joran can see the xml element and create
- //and place the relevant object correctly.
- JoranConfigurator jc = new JoranConfigurator();
- LoggerContext loggerContext = new LoggerContext();
- jc.setContext(loggerContext);
- jc.doConfigure(TeztConstants.TEST_DIR_PREFIX + "input/joran/turbo.xml");
+ // Although this test uses turbo filters, it only checks
+ // that Joran can see the xml element and create
+ // and place the relevant object correctly.
+ configure(TeztConstants.TEST_DIR_PREFIX + "input/joran/turbo.xml");
- //StatusPrinter.print(loggerContext.getStatusManager());
-
TurboFilter filter = loggerContext.getFirstTurboFilter();
assertTrue(filter instanceof NOPTurboFilter);
}
-
+
+ @Test
public void testTurboFilterWithStringList() throws JoranException {
- //Although this test uses turbo filters, it only checks
- //that Joran can see <user> elements, and behave correctly
- //that is call the addUser method and pass the correct values
- //to that method.
- JoranConfigurator jc = new JoranConfigurator();
- LoggerContext loggerContext = new LoggerContext();
- jc.setContext(loggerContext);
- jc.doConfigure(TeztConstants.TEST_DIR_PREFIX + "input/joran/turbo2.xml");
+ // Although this test uses turbo filters, it only checks
+ // that Joran can see <user> elements, and behave correctly
+ // that is call the addUser method and pass the correct values
+ // to that method.
+ configure(TeztConstants.TEST_DIR_PREFIX + "input/joran/turbo2.xml");
+
+ // StatusPrinter.print(loggerContext.getStatusManager());
- //StatusPrinter.print(loggerContext.getStatusManager());
-
TurboFilter filter = loggerContext.getFirstTurboFilter();
assertTrue(filter instanceof DebugUsersTurboFilter);
- DebugUsersTurboFilter dutf = (DebugUsersTurboFilter)filter;
+ DebugUsersTurboFilter dutf = (DebugUsersTurboFilter) filter;
assertEquals(2, dutf.getUsers().size());
}
-
+ @Test
public void testLevelFilter() throws JoranException {
- JoranConfigurator jc = new JoranConfigurator();
- LoggerContext loggerContext = new LoggerContext();
- jc.setContext(loggerContext);
- jc.doConfigure(TeztConstants.TEST_DIR_PREFIX
- + "input/joran/levelFilter.xml");
+ configure(TeztConstants.TEST_DIR_PREFIX + "input/joran/levelFilter.xml");
StatusPrinter.print(loggerContext);
- Logger logger = loggerContext.getLogger(this.getClass().getName());
logger.warn("hello");
logger.error("to be ignored");
-
+
@SuppressWarnings("unchecked")
- ListAppender<LoggingEvent> listAppender = (ListAppender) loggerContext
- .getLogger("root").getAppender("LIST");
-
+ ListAppender<LoggingEvent> listAppender = (ListAppender) root
+ .getAppender("LIST");
+
assertNotNull(listAppender);
assertEquals(1, listAppender.list.size());
LoggingEvent back = listAppender.list.get(0);
assertEquals(Level.WARN, back.getLevel());
assertEquals("hello", back.getMessage());
}
-
+
+ @Test
public void testEvaluatorFilter() throws JoranException {
- JoranConfigurator jc = new JoranConfigurator();
- LoggerContext loggerContext = new LoggerContext();
- jc.setContext(loggerContext);
- jc.doConfigure(TeztConstants.TEST_DIR_PREFIX
- + "input/joran/evaluatorFilter.xml");
+ configure(TeztConstants.TEST_DIR_PREFIX + "input/joran/evaluatorFilter.xml");
StatusPrinter.print(loggerContext);
- Logger logger = loggerContext.getLogger(this.getClass().getName());
logger.warn("hello");
logger.error("to be ignored");
-
+
@SuppressWarnings("unchecked")
- ListAppender<LoggingEvent> listAppender = (ListAppender) loggerContext
- .getLogger("root").getAppender("LIST");
-
+ ListAppender<LoggingEvent> listAppender = (ListAppender) root
+ .getAppender("LIST");
+
assertNotNull(listAppender);
assertEquals(1, listAppender.list.size());
LoggingEvent back = listAppender.list.get(0);
assertEquals(Level.WARN, back.getLevel());
assertEquals("hello", back.getMessage());
}
-
- public void testTurboDynamicThreshold() throws JoranException {
- JoranConfigurator jc = new JoranConfigurator();
- LoggerContext loggerContext = new LoggerContext();
- jc.setContext(loggerContext);
- jc.doConfigure(TeztConstants.TEST_DIR_PREFIX + "input/joran/turboDynamicThreshold.xml");
- StatusPrinter.print(loggerContext.getStatusManager());
-
- Logger logger = loggerContext.getLogger(this.getClass().getName());
- Logger root = loggerContext.getLogger(LoggerContext.ROOT_NAME);
+ @Test
+ public void testTurboDynamicThreshold() throws JoranException {
+ configure(TeztConstants.TEST_DIR_PREFIX
+ + "input/joran/turboDynamicThreshold.xml");
+
ListAppender listAppender = (ListAppender) root.getAppender("LIST");
assertEquals(0, listAppender.list.size());
-
+
// this one should be denied
MDC.put("userId", "user1");
logger.debug("hello user1");
// this one should log
MDC.put("userId", "user2");
- logger.debug("hello user2");
-
+ logger.debug("hello user2");
+
assertEquals(1, listAppender.list.size());
LoggingEvent le = (LoggingEvent) listAppender.list.get(0);
assertEquals("hello user2", le.getMessage());
}
+
+ @Test
+ public void testTurboDynamicThreshold2() throws JoranException {
+ configure(TeztConstants.TEST_DIR_PREFIX
+ + "input/joran/turboDynamicThreshold2.xml");
+
+ ListAppender listAppender = (ListAppender) root.getAppender("LIST");
+ assertEquals(0, listAppender.list.size());
+
+ // this one should log
+ MDC.put("userId", "user1");
+ logger.debug("hello user1");
+ // this one should log
+ MDC.put("userId", "user2");
+ logger.debug("hello user2");
+ // this one should fail
+ MDC.put("userId", "user3");
+ logger.debug("hello user3");
+
+ assertEquals(2, listAppender.list.size());
+ LoggingEvent le = (LoggingEvent) listAppender.list.get(0);
+ assertEquals("hello user1", le.getMessage());
+ le = (LoggingEvent) listAppender.list.get(1);
+ assertEquals("hello user2", le.getMessage());
+ }
}
1
0
Author: ceki
Date: Mon Oct 27 16:59:19 2008
New Revision: 1877
Modified:
logback/trunk/codeStyle.xml
Log:
Don't allow formatting within <pre> and <html> in javadocs
Modified: logback/trunk/codeStyle.xml
==============================================================================
--- logback/trunk/codeStyle.xml (original)
+++ logback/trunk/codeStyle.xml Mon Oct 27 16:59:19 2008
@@ -1,251 +1,264 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<profiles version="10">
-<profile name="logbackCodeStyle" version="10">
-<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="0"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_comments" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<profiles version="11">
+<profile kind="CodeFormatterProfile" name="slf4jCodeStyle" version="11">
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="80"/>
-<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
-<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
-<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="8"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
+<setting id="org.eclipse.jdt.core.compiler.source" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="80"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="8"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/>
+<setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
+<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="2"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.compiler.compliance" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="80"/>
-<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
-<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
-<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="2"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="80"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.5"/>
<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
</profile>
</profiles>
1
0
[ http://jira.qos.ch/browse/LBGENERAL-4?page=com.atlassian.jira.plugin.system… ]
Ceki Gulcu closed LBGENERAL-4.
------------------------------
Fix Version/s: 0.9.10
Resolution: Won't Fix
A stupid sounding idea. (It's my idea and I'll call it stupid if I want to).
> Config simulator
> ----------------
>
> Key: LBGENERAL-4
> URL: http://jira.qos.ch/browse/LBGENERAL-4
> Project: logback-general
> Issue Type: Improvement
> Components: build-structure
> Affects Versions: unspecified
> Environment: Operating System: Windows
> Platform: PC
> Reporter: Ceki Gulcu
> Assignee: Logback dev list
> Priority: Minor
> Fix For: 0.9.10
>
>
> It would be nive if we could have a small web-application to which we could hand a config file. This web-app would configure a LoggerContext and hand us the results via statii. Just need to be carefull not to allow users to clobber our system.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.qos.ch/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
1
0
FlushableAppender
-----------------
Key: LBCORE-57
URL: http://jira.qos.ch/browse/LBCORE-57
Project: logback-core
Issue Type: Improvement
Components: Appender
Affects Versions: 0.9.9
Reporter: Bruno Navert
Assignee: Logback dev list
Priority: Minor
Attachments: FlushableAppender.java
Create a FlushableAppender interface for appenders that can be manually flushed (only relevant if bufferingIO is enabled)
Interface can simply extend Appender and java.io.Flushable
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.qos.ch/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
2
5