svn commit: r1408 - in logback/trunk/logback-site/src/site/pages: . css manual templates

Author: ceki Date: Tue Mar 6 20:11:05 2007 New Revision: 1408 Added: logback/trunk/logback-site/src/site/pages/dependencies.html Modified: logback/trunk/logback-site/src/site/pages/css/site.css logback/trunk/logback-site/src/site/pages/demo.html logback/trunk/logback-site/src/site/pages/documentation.html logback/trunk/logback-site/src/site/pages/index.html logback/trunk/logback-site/src/site/pages/manual/appenders.html logback/trunk/logback-site/src/site/pages/manual/architecture.html logback/trunk/logback-site/src/site/pages/manual/contextSelector.html logback/trunk/logback-site/src/site/pages/manual/filters.html logback/trunk/logback-site/src/site/pages/manual/introduction.html logback/trunk/logback-site/src/site/pages/manual/joran.html logback/trunk/logback-site/src/site/pages/manual/layouts.html logback/trunk/logback-site/src/site/pages/manual/mdc.html logback/trunk/logback-site/src/site/pages/team.html logback/trunk/logback-site/src/site/pages/templates/right.js Log: - added dependencies.html (a page explaining logback dependencies) - various other improvements to the docs Modified: logback/trunk/logback-site/src/site/pages/css/site.css ============================================================================== --- logback/trunk/logback-site/src/site/pages/css/site.css (original) +++ logback/trunk/logback-site/src/site/pages/css/site.css Tue Mar 6 20:11:05 2007 @@ -215,6 +215,12 @@ } +table.bodyTable td { + padding-left: 0.5ex; + padding-bottom: 0.5ex; +} + + table.bodyTable tr.a { background-color: #ddd; } Modified: logback/trunk/logback-site/src/site/pages/demo.html ============================================================================== --- logback/trunk/logback-site/src/site/pages/demo.html (original) +++ logback/trunk/logback-site/src/site/pages/demo.html Tue Mar 6 20:11:05 2007 @@ -23,27 +23,27 @@ <h2>Logback Demo</h2> <p> - Welcome to the logback demo! This document will take you to a tour - that will show you some of the major possibilities of logback. + Welcome to the logback demo! This document will take you through + tour that will show you some of the major features of logback. </p> <h3>Installation</h3> <p> - First, please download the logback demo. You will need to install a - <a href="http://subversion.tigris.org/">Subversion</a> client - and issue the following line in a command/terminal window: + First, please download the logback demo. You will need to install a + <a href="http://subversion.tigris.org/">Subversion</a> client and + issue the following command on a console: </p> <div class="source"><pre>svn co http://svn.qos.ch/repos/logback-demo/trunk logback-demo</pre></div> -<p> -This will checkout a copy of the logback demonstration web-app to a directory called -<em>logback-demo</em>. The logback demo can be packaged as a <em>war</em> file and -deployed to an application server. We strongly recommand the use of -<a href="http://maven.apache.org/">Maven 2</a> to do this -task, since all it will take to compile, package and run a server with the demo is -a single command. +<p>This will checkout a copy of the logback demonstration web-app to a +directory called <em>logback-demo</em>. The logback demo can be +packaged as a <em>war</em> file and deployed to an application +server. We strongly recommend the use of <a +href="http://maven.apache.org/">Maven2</a> to do this task, since all +it will take to compile, package and run a server with the demo is a +single command. </p> <p> @@ -53,68 +53,73 @@ <div class="source"><pre>mvn package jetty:run</pre></div> -<p> - Then, visit <em>http://localhost:8080/logback-demo/</em> to view the main page of the logback demo. +<p>Then, visit <em>http://localhost:8080/logback-demo/</em> to view +the main page of the logback demo. </p> <h3>Logback Classic</h3> -<p> -For now, logback uses two components: one <code>ConsoleAppender</code> and one -<code>RollingFileAppender</code>. The <code>RollingFileAppender</code> sends logging events -to a file called <em>logFile.log</em> and will rollover -the active file every minute. The old file will be renamed and compressed to <em>zip</em> -file. The <code>ConsoleAppender</code> will output the logging requests to the console, -and shorten the logger names to gain some space in the console window, without making the -names unreadable. For example, <code>ch.qos.logback.demo.prime.NumberCruncherImpl -</code> will be displayed as <code>c.q.l.d.prime.NumberCruncherImpl</code>. +<p>For now, logback uses two components: one +<code>ConsoleAppender</code> and one +<code>RollingFileAppender</code>. The <code>RollingFileAppender</code> +sends logging events to a file called <em>logFile.log</em> and will +rollover the active file every minute. The old file will be renamed +and compressed to <em>zip</em> file. The <code>ConsoleAppender</code> +will output the logging requests to the console, and shorten the +logger names to gain some space in the console window, without making +the names unreadable. For example, +<code>ch.qos.logback.demo.prime.NumberCruncherImpl </code> will be +displayed as <code>c.q.l.d.prime.NumberCruncherImpl</code>. </p> <p>You can study the configuration file that is used by editing the -file called <em>logback.xml</em>, located in the <em>src/main/resources/</em> directory -of the demo. You might want to keep this file in an editor window, since we will -modify its content several times thoughout the demo. -</p> - -<p> -Let's now visit the <em>ViewStatii</em> page, via the navigation menu on the left hand -of the navigator window. This page contains the content of the <code>Status</code> objects that were -created until now. <code>Status</code> objects are a part of logback's powerful internal -reporting framework. They allow you to see what is going on in logback, and check -that a configuration file has been parsed correctly, or that a rollover has occured as -expected. -</p> - -<p> -After you're back to the main window, visiting the <em>View logs</em> page does -not impress much at the moment. Let us uncomment -the <strong>two</strong> parts of the config file that are below the <em>Cyclic buffer</em> comment. -A <code>CyclicBuffer</code> is a class that keeps track of logging events and holds these -objects for immediate or differed display. The first element that you will need to uncomment -is the <em>appender</em> element. This element describes and configures the <code>CyclicBuffer</code>. -The second element, found at the end of the configuration file, is a <em>appender-ref</em> element. -It is used to link the appender to a given logger. -Now reload the web-app by exiting the previous command with <em>CTRL-C</em> and issuing it -again: <em>mvn package jetty:run</em>. -</p> - -<p> -Now, the <em>View logs</em> page looks prettier. By virtue of the <code>CyclicBufferAppender</code>, -this page can fetch the last events and present them through a servlet. We see that each 3 seconds -a line is added to the logs. The formatting of this page is made with -a <code>HTMLLayout</code>. This component creates a nice and readable table containing the logging -events, based on a pattern that describes the information one wants to see in the table. -</p> +file called <em>logback.xml</em>, located in the +<em>src/main/resources/</em> directory of the demo. You might want to +keep this file in an editor window, since we will modify its content +several times thoughout the demo. +</p> + +<p>Let's now visit the <em>ViewStatii</em> page, via the navigation +menu on the left hand of the navigator window. This page contains the +content of the <code>Status</code> objects that were created until +now. <code>Status</code> objects are a part of logback's powerful +internal reporting framework. They allow you to see what is going on +in logback, and check that a configuration file has been parsed +correctly, or that a rollover has occured as expected. +</p> + +<p>After you're back to the main window, visiting the <em>View +logs</em> page does not impress much at the moment. Let us uncomment +the <strong>two</strong> parts of the config file that are below the +<em>Cyclic buffer</em> comment. A <code>CyclicBuffer</code> is a +class that keeps track of logging events and holds these objects for +immediate or differed display. The first element that you will need to +uncomment is the <em>appender</em> element. This element describes and +configures the <code>CyclicBuffer</code>. The second element, found +at the end of the configuration file, is a <em>appender-ref</em> +element. It is used to link the appender to a given logger. Now +reload the web-app by exiting the previous command with +<em>CTRL-C</em> and issuing it again: <em>mvn package jetty:run</em>. +</p> + +<p>Now, the <em>View logs</em> page looks prettier. By virtue of the +<code>CyclicBufferAppender</code>, this page can fetch the last events +and present them through a servlet. We see that each 3 seconds a line +is added to the logs. The formatting of this page is made with a +<code>HTMLLayout</code>. This component creates a nice and readable +table containing the logging events, based on a pattern that describes +the information one wants to see in the table. +</p> + +<p>Having the logs that we see on the web page cluttered with +scheduled <em>Howdydy-diddly-ho</em> messages is not very +comfortable. To get rid of these logs, now that we've verified that +they work, we can add an <code>EvaluatorFilter</code> to the +Appender. Uncomment the part named <em>Cyclic buffer with +Evaluator</em>. You may then comment the first Basic Cyclic buffer +<em>appender</em> element.</p> -<p> -Having the logs that we see on the web page cluttered with scheduled -<em>Howdydy-diddly-ho</em> messages -is not very comfortable. To get rid of these logs, now that we've verified that they -work, we can add an <code>EvaluatorFilter</code> to the Appender. Uncomment the -part named <em>Cyclic buffer with Evaluator</em>. You may then -comment the first Basic Cyclic buffer <em>appender</em> element.</p> -<p> -Let's take a look at the filter we've just added: +<p>Let's take a look at the filter we've just added: </p> <div class="source"><pre><filter class="ch.qos.logback.core.filter.EvaluatorFilter"> @@ -128,150 +133,150 @@ <OnMatch>DENY</OnMatch> </filter></pre></div> -<p> -The expression element contains a familiar java statement. This expression -checks that the name of the logger contains the String <em>LoggingTask</em>, but -also that the message accompagnying the log contains <em>Howdydy-diddly-ho</em>. -Moreover, in order to be sure that the <em>Howdydy-diddly-ho</em> task actually -works, we add to the expression a last statement that allows logs to be processed -for the first 20 seconds after the application launch. -The variables used in this statement (<code>logger</code>, <code>message</code> and -<code>event</code>) are made available by logback before the filter -evaluates the expression. -The <em>OnMatch</em> element allows the user to choose the filter's behaviour once -the expression was evaluated to true. A similar <em>OnMismatch</em> element exists. -</p> - -<p> -After a restart, the <em>Vew logs</em> page shows the -<em>Howdydy-diddly-ho</em> logs for the first 20 seconds only. Trying a prime calculations -on the <em>Prime number</em> page will add several lines to the <em>View logs</em> page. +<p>The expression element contains a familiar java statement. This +expression checks that the name of the logger contains the String +<em>LoggingTask</em>, but also that the message accompagnying the log +contains <em>Howdydy-diddly-ho</em>. Moreover, in order to be sure +that the <em>Howdydy-diddly-ho</em> task actually works, we add to the +expression a last statement that allows logs to be processed for the +first 20 seconds after the application launch. The variables used in +this statement (<code>logger</code>, <code>message</code> and +<code>event</code>) are made available by logback before the filter +evaluates the expression. The <em>OnMatch</em> element allows the +user to choose the filter's behaviour once the expression was +evaluated to true. A similar <em>OnMismatch</em> element exists. +</p> + +<p>After a restart, the <em>Vew logs</em> page shows the +<em>Howdydy-diddly-ho</em> logs for the first 20 seconds only. Trying +a prime calculations on the <em>Prime number</em> page will add +several lines to the <em>View logs</em> page. </p> <h4>Turbo Filters</h4> -<p> -Logback ships with a special category of filters: <code>TurboFilter</code> objects -are ultra-fast, context-wide filters. They reveals themselves very useful to -test MDC values, for examples and to add context-wide conditions to allow or deny -logging events. Let's uncomment the part named -<em>TurboFilter: MDC value</em> in the <em>logback.xml</em> file. -</p> -<p> -This part adds a <code>TurboFilter</code> object to the context. It allows to -have a typical output for every client that uses the demo application, but a different -one for one given user. Here, the filter will accept all the requests that are -associated with a MDC value of <em>sebastien</em> bound to the <em>username</em> key. -</p> -<p> -To view the consequences of such a <code>TurboFilter</code>, we are going to -stop all logging activity, except for a specific user. To achieve that, the simplest -way is to set the root logger's level to <code>OFF</code>. Modify the <em>level</em> -element, nested inside the <em>root</em> element of <em>logback.xml</em>. Its <em>value</em> -attribute should be <em>OFF</em> instead of <em>DEBUG</em>. Next, restart the server -as we've done previously. -</p> - -<p> -Once on the demo main webpage again, perform a few actions (i.e. calculate -a few prime numbers) and watch the <em>View logs</em> page. The table should be -empty. -</p> - -<p> -Now log in the application using the username <em>sebastien</em> and perform a few -prime calculations again. The <em>View logs</em> page now shows the logs that were -generated by the calculation classes. Moreover, each log is associated with the name -of the user who provoked the logging event. Please log off before continuing the +<p>Logback ships with a special category of filters: +<code>TurboFilter</code> objects are ultra-fast, context-wide +filters. They reveals themselves very useful to test MDC values, for +examples and to add context-wide conditions to allow or deny logging +events. Let's uncomment the part named <em>TurboFilter: MDC value</em> +in the <em>logback.xml</em> file. +</p> + +<p>This part adds a <code>TurboFilter</code> object to the context. It +allows to have a typical output for every client that uses the demo +application, but a different one for one given user. Here, the filter +will accept all the requests that are associated with a MDC value of +<em>sebastien</em> bound to the <em>username</em> key. +</p> + +<p>To view the consequences of such a <code>TurboFilter</code>, we are +going to stop all logging activity, except for a specific user. To +achieve that, the simplest way is to set the root logger's level to +<code>OFF</code>. Modify the <em>level</em> element, nested inside the +<em>root</em> element of <em>logback.xml</em>. Its <em>value</em> +attribute should be <em>OFF</em> instead of <em>DEBUG</em>. Next, +restart the server as we've done previously. +</p> + +<p>Once on the demo main webpage again, perform a few actions +(i.e. calculate a few prime numbers) and watch the <em>View logs</em> +page. The table should be empty. +</p> + +<p>Now log in the application using the username <em>sebastien</em> +and perform a few prime calculations again. The <em>View logs</em> +page now shows the logs that were generated by the calculation +classes. Moreover, each log is associated with the name of the user +who provoked the logging event. Please log off before continuing the demo, using the <em>logout</em> button on the left. </p> <h4>Parametrized logging</h4> -<p> -Parametrized logging is a feature that will be a great asset for any performance-critical -system. Usually, a logging request is issued like this: +<p>Parametrized logging is a feature that will be a great asset for +any performance-critical system. Usually, a logging request is issued +like this: </p> <div class="source"><pre>logger.debug("Hello, my name is" + username + ", I am " + age + " years old.");</pre></div> -<p> -By issuing this line, the cost of constructing the String cannot be saved when the -log request is not processed. For example, using the <code>debug()</code> method -when, as we've just done, the root level is any value higher that <em>DEBUG</em> will -result in a loss of time because all calls to the <code>debug()</code> method will -eventually be dropped. +<p>By issuing this line, the cost of constructing the String cannot be +saved when the log request is not processed. For example, using the +<code>debug()</code> method when, as we've just done, the root level +is any value higher that <em>DEBUG</em> will result in a loss of time +because all calls to the <code>debug()</code> method will eventually +be dropped. </p> -<p> -Logback offers the following method: +<p>Logback offers the following method: </p> <div class="source"><pre>logger.debug("Hello, my name is {}, I am {} years old", username, age);</pre></div> -<p> -As you can see, the variables are not inserted in the message yet. Both the message -and the values will be saved and used later, if the logging event is processed. -</p> - -<p> -Let us now run a test to see what kind of gain can we expect from this different -message formatting approach. First, go to the <em>Prime number</em> page and -run a few calculations. Check the time it takes to compute the results. To -see a clearer difference between the two formatting methods, you might want to -try the two big integers that are listed below the prime number textbox. -</p> - -<p> -Now let us edit the <code>NumberCruncherImpl</code> class, to switch the log methods. -You will find this class in the <em>src/main/java/ch/qos/logback/demo/prime/</em> -directory. On line 54 and 55, just uncomment the parametrized logging line and -comment out the other line. Restart the server with <em>mvn package jetty:run</em> -and re-run the calculations you tried beforehand. -</p> - -<p> -The durations should be obviously different. Remember that we had turned off all -logging in the previous step of this demo. With the initial formatting method, -we were constructing the logging message (<em>"Trying "+i+" as a factor."</em>) -a huge amount of times, actually each time a factor was tried for these big numbers. -With the paramatrized logging, the construction of the message was postponed and, since -logging was turned off, not processed. We see here that the cost of the <b>non-</b>logging -was taken down to a very small figure, dividing the total cost of the calculation -by a non-negligeable factor. +<p>As you can see, the variables are not inserted in the message +yet. Both the message and the values will be saved and used later, if +the logging event is processed. +</p> + +<p>Let us now run a test to see what kind of gain can we expect from +this different message formatting approach. First, go to the <em>Prime +number</em> page and run a few calculations. Check the time it takes +to compute the results. To see a clearer difference between the two +formatting methods, you might want to try the two big integers that +are listed below the prime number textbox. +</p> + +<p>Now let us edit the <code>NumberCruncherImpl</code> class, to +switch the log methods. You will find this class in the +<em>src/main/java/ch/qos/logback/demo/prime/</em> directory. On line +54 and 55, just uncomment the parametrized logging line and comment +out the other line. Restart the server with <em>mvn package +jetty:run</em> and re-run the calculations you tried beforehand. +</p> + +<p>The durations should be obviously different. Remember that we had +turned off all logging in the previous step of this demo. With the +initial formatting method, we were constructing the logging message +(<em>"Trying "+i+" as a factor."</em>) a huge amount of times, +actually each time a factor was tried for these big numbers. With the +paramatrized logging, the construction of the message was postponed +and, since logging was turned off, not processed. We see here that the +cost of the <b>non-</b>logging was taken down to a very small figure, +dividing the total cost of the calculation by a non-negligeable +factor. </p> <h4>Markers</h4> -<p> -SLF4J allows the use of Marker objects. -For example, one could use <em>TRACE</em> markers, to enrich some -specific logging statements. In our demo applications, the <em>Howdydy-diddly-ho</em> -logging statements are bound to a <em>TRACE</em> marker. -On the other hand, one could want that such -marked statements be dropped and not logged anywhere. <code>TurboFilter</code> -objects can do that in an elegant and flexible way. Let us uncomment the -<em>TurboFilter: Marker value</em> section in the <em>logback.xml</em> file as -well as set the root logger's level back to <em>DEBUG</em>, -and reload via the <em>Reload configuration</em> page. -</p> -<p> -The logging statements that contained the <em>Howdydy-diddly-ho</em> do -not appear anymore because they were associated with a <em>TRACE</em> marker. You -can check that by visiting the <em>View Logs</em> page and reloading it every three +<p>SLF4J allows the use of Marker objects. For example, one could use +<em>TRACE</em> markers, to enrich some specific logging statements. In +our demo applications, the <em>Howdydy-diddly-ho</em> logging +statements are bound to a <em>TRACE</em> marker. On the other hand, +one could want that such marked statements be dropped and not logged +anywhere. <code>TurboFilter</code> objects can do that in an elegant +and flexible way. Let us uncomment the <em>TurboFilter: Marker +value</em> section in the <em>logback.xml</em> file as well as set the +root logger's level back to <em>DEBUG</em>, and reload via the +<em>Reload configuration</em> page. +</p> + +<p>The logging statements that contained the +<em>Howdydy-diddly-ho</em> do not appear anymore because they were +associated with a <em>TRACE</em> marker. You can check that by +visiting the <em>View Logs</em> page and reloading it every three seconds for several times. </p> <h3>Logback Access</h3> -<p> -Access logging is another important feature offered by logback. Give a -look at what appears on the console while -browsing the logback-demo website. Each access is logged to the console, -with some information about the event. The configuration file -that we will edit in the next few steps is called <em>logback-access.xml</em> -and is located in the <em>src/etc/</em> directory. -The necessary configuration is listed below: +<p>Access logging is another important feature offered by +logback. Give a look at what appears on the console while browsing the +logback-demo website. Each access is logged to the console, with some +information about the event. The configuration file that we will edit +in the next few steps is called <em>logback-access.xml</em> and is +located in the <em>src/etc/</em> directory. The necessary +configuration is listed below: </p> <div class="source"><pre><configuration> @@ -287,23 +292,22 @@ </configuration></pre></div> -<p> -To see more clearly the output produced by logback access, -you might want set the root logger's level to <em>OFF</em>, in the first -logback configuration file, called -<em>logback.xml</em> and located in <em>src/main/resources/</em>. It will clear -the console from the logs made by the demo application and only display those -that are generated by logback access. -</p> - -<p> -To see the logs produced by logback access, just visit a few pages and -look at your console. The information contained in each line has been -specified in the configuration file. The <code>ConsoleAppender</code> -named <em>STDOUT</em> contains a <code>PatternLayout</code> component. -This very component that one uses in logback classic to display either -the message, logger name or level of the request is used in logback -access to display the request method, requested page, status code and many others. +<p>To see more clearly the output produced by logback access, you +might want set the root logger's level to <em>OFF</em>, in the first +logback configuration file, called <em>logback.xml</em> and located in +<em>src/main/resources/</em>. It will clear the console from the logs +made by the demo application and only display those that are generated +by logback access. +</p> + +<p>To see the logs produced by logback access, just visit a few pages +and look at your console. The information contained in each line has +been specified in the configuration file. The +<code>ConsoleAppender</code> named <em>STDOUT</em> contains a +<code>PatternLayout</code> component. This very component that one +uses in logback classic to display either the message, logger name or +level of the request is used in logback access to display the request +method, requested page, status code and many others. </p> <p>Here is a sample output of this appender.</p> @@ -323,17 +327,16 @@ <h4>Filtering</h4> -<p> -In this next part, we are going to add some information to the console. -Let us imagine that we want to log the numbers that are tried on the -<em>Lottery</em> page. We will need a second <code>ConsoleAppender</code> -that will only print a given information (e.g. the guessed number, along -with some hints about the player). The appender will also have to -print that information only when a certain page is accessed. +<p>In this next part, we are going to add some information to the +console. Let us imagine that we want to log the numbers that are +tried on the <em>Lottery</em> page. We will need a second +<code>ConsoleAppender</code> that will only print a given information +(e.g. the guessed number, along with some hints about the player). The +appender will also have to print that information only when a certain +page is accessed. </p> -<p> -The configuration lines that are necessary are listed below. +<p>The configuration lines that are necessary are listed below. </p> <div class="source"><pre><appender name="STDOUT_LOTTERY" @@ -358,58 +361,59 @@ </layout> </appender></pre></div> -<p> -This appender will use a <code>PatternLayout</code> to format its output. -The <em>%reqParameter</em> conversion word is used to extract the guessed number -from the request, and print it. -</p> -<p> -It also uses an <code>EvaluatorFilter</code> that will prevent the appender -to display anything when the access' request url does not match the -given expression. You can see that it is easy to specify a RegExp, name -it and use it in the expression that will be evaluated. In that case, we only -entered the name of the <em>lottery.do</em> action. -</p> - -<p> -Let us uncomment the two elements with the <em>Lottery to Console</em> comments and -restart the server. Now, try to play the lottery. You will see more lines in the -Console that you've seen until now. At every try, logback will produce a log -as shown below: +<p>This appender will use a <code>PatternLayout</code> to format its +output. The <em>%reqParameter</em> conversion word is used to extract +the guessed number from the request, and print it. +</p> + +<p>It also uses an <code>EvaluatorFilter</code> that will prevent the +appender to display anything when the access' request url does not +match the given expression. You can see that it is easy to specify a +RegExp, name it and use it in the expression that will be +evaluated. In that case, we only entered the name of the +<em>lottery.do</em> action. +</p> + +<p>Let us uncomment the two elements with the <em>Lottery to +Console</em> comments and restart the server. Now, try to play the +lottery. You will see more lines in the Console that you've seen until +now. At every try, logback will produce a log as shown below: </p> <div class="source"><pre>LOTTERY: 192.168.1.6 [POST /logback-demo/Lottery.do HTTP/1.1] Guess=321</pre></div> <h4>Sending emails</h4> -<p> -Logback access provides several components that are usually used by the classic -module. For example, a <code>SMTPAppender</code> can be used to send an email when -a specific event occurs. Here, we will contact the lottery administrator each time -a winner is detected. To achieve this, we will add a <code>SMTPAppender</code> to -the existing configuration. Please uncomment the part of <em>logback-access.xml</em> -named <em>Lottery to Email</em>. Do not forget to uncomment the -<em>appender-ref</em> element, at the end of the configuration file, referencing -the appender called <em>SMTP</em>. In the appender element, notice the use of a -<code>URLEvaluator</code>. This evaluator allows us to only specify one or more URLs -that have to be watched. When one of them are accessed, an email is sent. -</p> - -<p> -A reload of the configuration has to be done before we can test this new -component. Once done, try to play the lottery with the number <em>99</em>. -You should see a congratulation message but, most importantly, the -specified recipients should have a new mail in their mailbox. The content -of the email is a nicely formatted HTML table with informations about -the access that have occured before the triggering event. +<p>Logback access provides several components that are usually used by +the classic module. For example, a <code>SMTPAppender</code> can be +used to send an email when a specific event occurs. Here, we will +contact the lottery administrator each time a winner is detected. To +achieve this, we will add a <code>SMTPAppender</code> to the existing +configuration. Please uncomment the part of +<em>logback-access.xml</em> named <em>Lottery to Email</em>. Do not +forget to uncomment the <em>appender-ref</em> element, at the end of +the configuration file, referencing the appender called +<em>SMTP</em>. In the appender element, notice the use of a +<code>URLEvaluator</code>. This evaluator allows us to only specify +one or more URLs that have to be watched. When one of them are +accessed, an email is sent. +</p> + +<p>A reload of the configuration has to be done before we can test +this new component. Once done, try to play the lottery with the number +<em>99</em>. You should see a congratulation message but, most +importantly, the specified recipients should have a new mail in their +mailbox. The content of the email is a nicely formatted HTML table +with informations about the access that have occured before the +triggering event. </p> <h3>JMX</h3> -<p> -Logback publishes several components via JMX. This allows you to see -the status of certain objects, and change several configuration parameters. -Publishing logback's components via JMX is possible with Jetty and Tomcat. +<p>Logback publishes several components via JMX. This allows you to +see the status of certain objects, and change several configuration +parameters. Publishing logback's components via JMX is possible with +Jetty and Tomcat. </p> <p> @@ -418,41 +422,42 @@ <div class="source"><pre>http://localhost:8082/</pre></div> -<p> -The domain <em>ch.qos.logback.access.jetty</em> contains an entry -that allows you to see the <em>RequestLogImpl</em> component. This component -is used to plug logback in Jetty's internal achitecture. Clicking on -it reveals the status of several parameters, such as the started status, and -two methods are available to start and stop the <em>RequestLogImpl</em>. -</p> - -<p> -To see the influence of the available operations, place the terminal window -and your web browser such that you can see them both. Stop the <em>RequestLogImlp</em> -and reload a few times the main page of the demo. Nothing should be displayed. If you start -the <em>RequestLogImpl</em> again, the requests will be shown in the terminal -window. +<p>The domain <em>ch.qos.logback.access.jetty</em> contains an entry +that allows you to see the <em>RequestLogImpl</em> component. This +component is used to plug logback in Jetty's internal +achitecture. Clicking on it reveals the status of several parameters, +such as the started status, and two methods are available to start and +stop the <em>RequestLogImpl</em>. +</p> + +<p>To see the influence of the available operations, place the +terminal window and your web browser such that you can see them +both. Stop the <em>RequestLogImlp</em> and reload a few times the main +page of the demo. Nothing should be displayed. If you start the +<em>RequestLogImpl</em> again, the requests will be shown in the +terminal window. +</p> + +<p>In the <em>logback-access.xml</em> configuration file, uncomment +the <em>JMX</em> part and restart the server. A +<code>CountingFilter</code> will now be available in the +<em>ch.qos.logback.access</em> domain. Clicking on it will display +several statistical figures corresponding to server accesses. Loading +some application pages will make these figures grow and show a +time-sensitive picture of the server activity. </p> -<p> -In the <em>logback-access.xml</em> configuration file, uncomment the <em>JMX</em> -part and restart the server. A <code>CountingFilter</code> will now be available in -the <em>ch.qos.logback.access</em> domain. Clicking on it will display several statistical -figures corresponding to server accesses. Loading some application pages will make -these figures grow and show a time-sensitive picture of the server activity. -</p> - -<p> -These is more to discover with logback and JMX. In the <em>logback.xml</em> file, -placed in the <em>src/main/resources</em> directory, uncomment the <code>JMXConfigurator</code> -element. Once done, restart the server. -</p> - -<p> -By refreshing the previously loaded JMX page, you should see a new component, -under the domain <em>ch.qos.logback.classic</em>. It is the <code>JMXConfigurator</code>. -Clicking on it reveals its content. Its possibilities are listed below: +<p>These is more to discover with logback and JMX. In the +<em>logback.xml</em> file, placed in the <em>src/main/resources</em> +directory, uncomment the <code>JMXConfigurator</code> element. Once +done, restart the server. +</p> + +<p>By refreshing the previously loaded JMX page, you should see a new +component, under the domain <em>ch.qos.logback.classic</em>. It is the +<code>JMXConfigurator</code>. Clicking on it reveals its content. Its +possibilities are listed below: </p> <ul> @@ -474,47 +479,40 @@ <p>Change the level setting of a specified logger.</p> </ul> -<p> - In the last case, you must specify the name of the logger you - wish to alter, and its new level. +<p> In the last case, you must specify the name of the logger you wish + to alter, and its new level. </p> -<p> -Checking the level of a logger is an easy task. Enter the name of the logger in -the appropriate field and click the <em>Invoke</em> button. You should be able -to verify that the logger named <em>root</em> has its level set to <em>OFF</em>. +<p>Checking the level of a logger is an easy task. Enter the name of +the logger in the appropriate field and click the <em>Invoke</em> +button. You should be able to verify that the logger named +<em>root</em> has its level set to <em>OFF</em>. </p> -<p> -Let us test the level setting possibility of the configurator. -The <em>Prime Number</em> page requests two types of logs. When the -calculation checks if a number is a factor, a <em>DEBUG</em> log is displayed. When -the calculation has found a factor, a <em>INFO</em> log is displayed. +<p>Let us test the level setting possibility of the configurator. The +<em>Prime Number</em> page requests two types of logs. When the +calculation checks if a number is a factor, a <em>DEBUG</em> log is +displayed. When the calculation has found a factor, a <em>INFO</em> +log is displayed. </p> -<p> -Let us first set the level of the logger named <em>ch.qos.logback.demo.prime</em> -to <em>DEBUG</em>. Run a prime calculation directly, without restarting the server. The -<em>View logs</em> page should show the <em>DEBUG</em> and <em>INFO</em> logs. +<p>Let us first set the level of the logger named +<em>ch.qos.logback.demo.prime</em> to <em>DEBUG</em>. Run a prime +calculation directly, without restarting the server. The <em>View +logs</em> page should show the <em>DEBUG</em> and <em>INFO</em> logs. </p> -<p> -Now, if you set the level of the <em>ch.qos.logback.demo.prime</em> logger to -<em>INFO</em>, and run a prime calculation -again, you should not see the <em>DEBUG</em> level logs anymore. +<p>Now, if you set the level of the <em>ch.qos.logback.demo.prime</em> +logger to <em>INFO</em>, and run a prime calculation again, you should +not see the <em>DEBUG</em> level logs anymore. </p> -<p> -This demo of logback is now over. Do not hesitate to play around with the configuration files. -You might want to check the <a href="http://logback.qos.ch/documentation.html"> -logback documentation page</a> for more information about any component -you'd like to test. +<p>This demo of logback is now over. Do not hesitate to play around +with the configuration files. You might want to check the <a +href="http://logback.qos.ch/documentation.html"> logback documentation +page</a> for more information about any component you'd like to test. </p> - - - - <script src="templates/footer.js"></script> </div> Added: logback/trunk/logback-site/src/site/pages/dependencies.html ============================================================================== --- (empty file) +++ logback/trunk/logback-site/src/site/pages/dependencies.html Tue Mar 6 20:11:05 2007 @@ -0,0 +1,204 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> +<title>Logback Dependencies</title> +<link rel="stylesheet" type="text/css" media="screen" href="css/site.css" /> +</head> +<body> +<script> + prefix=''; +</script> + +<script src="templates/header.js"></script> +<div id="left"> + <script src="templates/left.js"></script> +</div> +<div id="right"> + <script src="templates/right.js"></script> +</div> +<div id="content"> + + + <h1>Dependencies per module</h1> + + <p>Each logback module has a different set of dependencies. These + are listed below in a separate table per module.</p> + + <h2>logback-core</h2> + + <table class="bodyTable"> + <tr> + <th>Component</th> + <th>dependencies</th> + </tr> + + <tr class="a"> + <td>Overall</td> + <td> + <ul> + <li>JDK 1.5, unless you are using the retro-translated + <em>logback-core-${project.version}-jdk14.jar</em> which + requires JDK 1.4 + </li> + </ul> + </td> + </tr> + + <tr class="b"> + <td>JMSAppender</td> + <td> + <ul> + <li><a href="http://java.sun.com/products/jms/docs.html">JMS + API</a> version 1.1 + </li> + </ul> + </td> + </tr> + <tr class="b"> + <td>SMTPAppender</td> + <td> + <ul> + <li><a + href="https://glassfish.dev.java.net/javaee5/mail/">JavaMail + API</a> version 1.4, + </li> + <li><a + href="http://java.sun.com/products/javabeans/jaf/index.jsp">JavaBeans + Activation Framework (JAF)</a> version 1.1 + </li> + </ul> + </td> + </tr> + <tr class="a"> + <td>JaninoEventEvaluatorBase and derived classes</td> + <td> + <ul> + <li><a href="http://janino.net">Janino</a> version 2.4.3</li> + </ul> + </td> + </tr> + </table> + + <h2>logback-classic</h2> + + <table class="bodyTable"> + <tr> + <th>Component</th> + <th>dependencies</th> + </tr> + + <tr class="a"> + <td>Overall</td> + <td> + <ul> + <li>JDK 1.5, unless you are using the retro-translated + <em>logback-classic-${project.version}-jdk14.jar</em> which + requires JDK 1.4 + </li> + </ul> + </td> + </tr> + + <tr class="b"> + <td>Overall</td> + <td> + <ul> + <li>logback-core, and by transitivity logback-core's + dependencies. + </li> + </ul> + </td> + </tr> + + <tr class="a"> + <td>Overall</td> + <td> + <ul> + <li><a href="http://www.slf4j.org">slf4j-api</a> version + ${slf4j.version} + </li> + </ul> + </td> + </tr> + + <tr class="b"> + <td>ch.qos.logback.classic.selector.*</td> + <td> + <ul> + <li>servlet-api version 2.5 + </li> + </ul> + </td> + </tr> + </table> + + <h2>logback-access</h2> + + <table class="bodyTable"> + <tr> + <th>Component</th> + <th>dependencies</th> + </tr> + + <tr class="a"> + <td>Overall</td> + <td> + <ul> + <li>JDK 1.5, unless you are using the retro-translated + <em>logback-classic-${project.version}-jdk14.jar</em> which + requires JDK 1.4 + </li> + </ul> + </td> + </tr> + + <tr class="b"> + <td>Overall</td> + <td> + <ul> + <li>logback-core, and by transitivity logback-core's + dependencies. + </li> + </ul> + </td> + </tr> + + <tr class="a"> + <td>Overall</td> + <td> + <ul> + <li>servlet-api version 2.5 + </li> + </ul> + </td> + </tr> + + + <tr class="b"> + <td>ch.qos.logback.access.jetty.*</td> + <td> + <ul> + <li><a href="http://jetty.mortbay.org">Jetty</a> version 6.1.1 + </li> + </ul> + </td> + </tr> + + <tr class="a"> + <td>ch.qos.logback.access.tomcat.*</td> + <td> + <ul> + <li><a href="http://tomcat.apache.org">Tomcat</a> version 5.5.15 + </li> + </ul> + </td> + </tr> + </table> + + +<script src="../templates/footer.js"></script> +</div> +</body> +</html> + \ No newline at end of file Modified: logback/trunk/logback-site/src/site/pages/documentation.html ============================================================================== --- logback/trunk/logback-site/src/site/pages/documentation.html (original) +++ logback/trunk/logback-site/src/site/pages/documentation.html Tue Mar 6 20:11:05 2007 @@ -34,6 +34,12 @@ <li> <a href="faq.html">A Frequently Asked Questions list (FAQ)</a> </li> + + <li> + <a href="dependencies.html">Dependencies per module</a> + </li> + + <li> <a href="bridge.html">How to use the log4j bridge</a> </li> @@ -41,7 +47,7 @@ <a href="jmxConfig.html">How to use the logback JMX Configurator</a> </li> <li> - <a href="demo.html">A step-by-step document to experience the logback-demo webApp</a> + <a href="demo.html">Walk-through logback-demo webApp</a> </li> </ul> @@ -59,17 +65,14 @@ </li> </ul> - <p> - Recently, Ceki Gülcü presented the top 10 reasons for migrating your projects to logback. - Issues such as migration strategy, new APIs, SLF4J and Joran were be discussed. Emphasis was given to - practical aspects and a live demo rather than relatively theoretical considerations. If you were - not able to attend the presentation (or even if you were there), you can - <a href="10reasons.ppt">download the slides</a> that Ceki used. - </p> - - - - + <h2>Articles and Presentations</h2> + + <ul> + <li><a href="10reasons.ppt">Top 10 reasons for migrating to + logback</a>, by Ceki Gülcü and Sébastien + Pennec. + </li> + </ul> <script src="templates/footer.js"></script> </div> Modified: logback/trunk/logback-site/src/site/pages/index.html ============================================================================== --- logback/trunk/logback-site/src/site/pages/index.html (original) +++ logback/trunk/logback-site/src/site/pages/index.html Tue Mar 6 20:11:05 2007 @@ -51,7 +51,7 @@ </p> - +<script src="templates/footer.js"></script> </div> </body> </html> Modified: logback/trunk/logback-site/src/site/pages/manual/appenders.html ============================================================================== --- logback/trunk/logback-site/src/site/pages/manual/appenders.html (original) +++ logback/trunk/logback-site/src/site/pages/manual/appenders.html Tue Mar 6 20:11:05 2007 @@ -4,10 +4,12 @@ <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <title>Chapter 4: Appenders</title> <link rel="stylesheet" type="text/css" media="screen" href="../css/site.css" /> +<link rel="stylesheet" type="text/css" media="print" href="../css/print.css" /> + </head> <body> - <script> -prefix='../'; +<script> + prefix='../'; </script> <script src="../templates/header.js"></script> <div id="left"> @@ -224,13 +226,13 @@ configurable options. These options are described next. </p> - <table> - <tr> + <table class="bodyTable"> + <tr class="a"> <th>Option Name</th> <th>Type</th> <th>Description</th> </tr> - <tr> + <tr class="a"> <td><b><span class="option">Encoding</span></b></td> <td><code>String</code></td> <td> @@ -248,7 +250,7 @@ that the platform's default encoding is used. </td> </tr> - <tr> + <tr class="b"> <td><b><span class="option">ImmediateFlush</span></b></td> <td><code>boolean</code></td> @@ -351,23 +353,23 @@ which buffers I/O operations but not character conversions. </p> - <table> - <tr> + <table class="bodyTable"> + <tr class="a"> <th>Option Name</th> <th>Type</th> <th>Description</th> </tr> - <tr> + <tr class="b"> <td><b><span class="option">Encoding</span></b></td> <td><code>String</code></td> <td>See <code>WriterAppender</code> options.</td> </tr> - <tr> + <tr class="a"> <td><b><span class="option">ImmediateFlush</span></b></td> <td><code>boolean</code></td> <td>See <code>WriterAppender</code> options.</td> </tr> - <tr> + <tr class="b"> <td><b><span class="option">Target</span></b></td> <td><code>String</code></td> <td> @@ -422,25 +424,25 @@ a <code>BufferedWriter</code>. Options for <code>FileAppender</code> are summarized below. </p> - <table> - <tr> + <table class="bodyTable"> + <tr class="a"> <th>Option Name</th> <th>Type</th> <th>Description</th> </tr> - <tr> + <tr class="b"> <td><b><span class="option">Append</span></b></td> <td><code>boolean</code></td> <td>If true, events are appended at the end of an existing file. Otherwise, if <span class="option">Append</span> is false, any existing file is truncated. The <span class="option">Append</span> option is set to true by default.</td> </tr> - <tr> + <tr class="a"> <td><b><span class="option">Encoding</span></b></td> <td><code>String</code></td> <td>See <code>WriterAppender</code> options.</td> </tr> - <tr> + <tr class="b"> <td><b><span class="option">BufferedIO</span></b></td> <td><code>boolean</code></td> <td> @@ -456,12 +458,12 @@ CPU cycles in the process. </td> </tr> - <tr> + <tr class="a"> <td><b><span class="option">BufferSize</span></b></td> <td><code>int</code></td> <td>Size of <code>BufferedWriter</code> buffer. The default value is 8192.</td> </tr> - <tr> + <tr class="b"> <td><b><span class="option">File</span></b></td> <td><code>String</code></td> <td> @@ -475,7 +477,7 @@ The <span class="option">File</span> option has no default value. </td> </tr> - <tr> + <tr class="a"> <td><b><span class="option">ImmediateFlush</span></b></td> <td><code>boolean</code></td> <td> @@ -566,43 +568,43 @@ <p>Here are the available options for <code>RollingFileAppender</code>:</p> - <table> - <tr> + <table class="bodyTable"> + <tr class="a"> <th>Option Name</th> <th>Type</th> <th>Description</th> </tr> - <tr> + <tr class="b"> <td><b><span class="option">Append</span></b></td> <td><code>boolean</code></td> <td>See <code>FileAppender</code> options.</td> </tr> - <tr> + <tr class="a"> <td><b><span class="option">BufferedIO</span></b></td> <td><code>boolean</code></td> <td>See <code>FileAppender</code> options.</td> </tr> - <tr> + <tr class="b"> <td><b><span class="option">BufferSize</span></b></td> <td><code>int</code></td> <td>See <code>FileAppender</code> options.</td> </tr> - <tr> + <tr class="a"> <td><b><span class="option">Encoding</span></b></td> <td><code>String</code></td> <td>See <code>WriterAppender</code> options.</td> </tr> - <tr> + <tr class="b"> <td><b><span class="option">File</span></b></td> <td><code>String</code></td> <td>See <code>FileAppender</code> options.</td> </tr> - <tr> + <tr class="a"> <td><b><span class="option">ImmediateFlush</span></b></td> <td><code>boolean</code></td> <td>See <code>WriterAppender</code> options.</td> </tr> - <tr> + <tr class="b"> <td><b><span class="option">RollingPolicy</span></b></td> <td><code>RollingPolicy</code></td> <td> @@ -611,7 +613,7 @@ occurs. See more information below. </td> </tr> - <tr> + <tr class="a"> <td><b><span class="option">TriggeringPolicy</span></b></td> <td><code>TriggeringPolicy</code></td> <td> @@ -671,13 +673,13 @@ Here are the available options for <code>FixedWindowRollingPolicy</code> </p> - <table> - <tr> + <table class="bodyTable"> + <tr class="a"> <th>Option Name</th> <th>Type</th> <th>Description</th> </tr> - <tr> + <tr class="b"> <td><b><span class="option">FileNamePattern</span></b></td> <td><code>String</code></td> <td> @@ -703,7 +705,7 @@ </p> </td> </tr> - <tr> + <tr class="a"> <td><b><span class="option">MaxIndex</span></b></td> <td><code>int</code></td> <td> @@ -712,7 +714,7 @@ </p> </td> </tr> - <tr> + <tr class="b"> <td><b><span class="option">MinIndex</span></b></td> <td><code>int</code></td> <td> @@ -740,8 +742,8 @@ option is set to <em>foo.log</em>. </p> - <table> - <tr> + <table class="bodyTable"> + <tr class="a"> <th> Steps </th> @@ -753,7 +755,7 @@ </th> <th>Description</th> </tr> - <tr> + <tr class="b"> <td> 0 </td> @@ -768,7 +770,7 @@ into the initial file. </td> </tr> - <tr> + <tr class="a"> <td> 1 </td> @@ -783,7 +785,7 @@ a new <em>foo.log</em> file is created and used for the output. </td> </tr> - <tr> + <tr class="b"> <td> 2 </td> @@ -799,7 +801,7 @@ Again, a new <em>foo.log</em> file is created and used for the output. </td> </tr> - <tr> + <tr class="a"> <td> 3 </td> @@ -816,7 +818,7 @@ A new <em>foo.log</em> file is created and used for the output. </td> </tr> - <tr> + <tr class="b"> <td> 4 </td> @@ -892,16 +894,16 @@ of <em>yyyy-MM-dd</em> is assumed. The following examples should clarify the point. </p> - <table> - <tr> + <table class="bodyTable"> + <tr class="a"> <th> <span class="option">FileNamePattern</span> </th> <th>Roll-over schedule</th> <th>Example</th> </tr> - <tr> - <td> + <tr class="b"> + <td class="small"> <em>/wombat/folder/foo.%d</em> </td> <td> @@ -917,8 +919,8 @@ output will be directed to <em>/wombat/foo.2006-11-24</em>. </td> </tr> - <tr> - <td> + <tr class="a"> + <td class="small"> <em>/wombat/foo.%d{yyyy-MM}.log</em> </td> <td>Rollover at the beginning of each month.</td> @@ -930,8 +932,8 @@ <em>/wombat/foo.2006-11.log</em>. </td> </tr> - <tr> - <td> + <tr class="b"> + <td class="small"> <em>/wombat/foo.%d{yyyy-ww}.log</em> </td> <td>Rollover at the first day of each week. Note that the first @@ -944,9 +946,9 @@ until it is rolled over at the beginning of the next week. </td> </tr> - <tr> - <td> - <em>/wombat/foo.%d{yyyy-MM-dd-a}.log</em> + <tr class="a"> + <td class="small"> + <em>/wombat/foo. /<br/>%d{yyyy-MM-dd-a}.log</em> </td> <td>Rollover at midnight and midday of each day.</td> <td> @@ -956,9 +958,9 @@ <em>/wombat/foo.2006-11-03-PM.log</em>. </td> </tr> - <tr> - <td> - <em>/wombat/foo.%d{yyyy-MM-dd_HH}.log</em> + <tr class="b"> + <td class="small"> + <em>/wombat/foo. /<br/>%d{yyyy-MM-dd_HH}.log</em> </td> <td>Rollover at the top of each hour.</td> <td> @@ -968,9 +970,9 @@ <em>/wombat/foo.2006-11-03_12.log</em>. </td> </tr> - <tr> - <td> - <em>/wombat/foo.%d{yyyy-MM-dd_HH-mm}.log</em> + <tr class="a"> + <td class="small"> + <em>/wombat/foo. /<br/>%d{yyyy-MM-dd_HH-mm}.log</em> </td> <td>Rollover at the beggining of every minute.</td> <td> @@ -1002,13 +1004,13 @@ This feature is enabled if the value of the <span class="option">FileNamePattern</span> option ends with <em>.gz</em> or <em>.zip</em>. </p> - <table> - <tr> + <table class="bodyTable"> + <tr class="a"> <th><span class="option">FileNamePattern</span></th> <th>Rollover schedule</th> <th>Example</th> </tr> - <tr> + <tr class="b"> <td><em>/wombat/foo.%d.gz</em></td> <td>Daily rollover (at midnight) with automatic GZIP compression of the arcived files.</td> @@ -1271,13 +1273,13 @@ <code>SocketAppender</code> options are listed in the following table. </p> - <table> - <tr> + <table class="bodyTable"> + <tr class="a"> <th>Option Name</th> <th>Type</th> <th>Description</th> </tr> - <tr> + <tr class="b"> <td><b><span class="option">IncludeCallerData</span></b></td> <td><code>boolean</code></td> <td> @@ -1288,7 +1290,7 @@ </p> </td> </tr> - <tr> + <tr class="a"> <td><b><span class="option">Port</span></b></td> <td><code>int</code></td> <td> @@ -1297,7 +1299,7 @@ </p> </td> </tr> - <tr> + <tr class="b"> <td><b><span class="option">ReconnectionDelay</span></b></td> <td><code>int</code></td> <td> @@ -1310,7 +1312,7 @@ connector thread present. </td> </tr> - <tr> + <tr class="a"> <td><b><span class="option">RemoteHost</span></b></td> <td><code>String</code></td> <td> @@ -1501,13 +1503,13 @@ Here are <code>JMSAppenderBase</code>'s options: </p> - <table> - <tr> + <table class="bodyTable"> + <tr class="a"> <th>Option Name</th> <th>Type</th> <th>Description</th> </tr> - <tr> + <tr class="a"> <td><b><span class="option">InitialContextFactoryName</span></b></td> <td><code>String</code></td> <td> @@ -1523,7 +1525,7 @@ </p> </td> </tr> - <tr> + <tr class="b"> <td><b><span class="option">ProviderURL</span></b></td> <td><code>String</code></td> <td> @@ -1539,7 +1541,7 @@ </p> </td> </tr> - <tr> + <tr class="a"> <td><b><span class="option">URLPkgPrefixes</span></b></td> <td><code>String</code></td> <td> @@ -1561,7 +1563,7 @@ </p> </td> </tr> - <tr> + <tr class="a"> <td><b><span class="option">SecurityPrincipalName</span></b></td> <td><code>String</code></td> <td> @@ -1576,7 +1578,7 @@ </p> </td> </tr> - <tr> + <tr class="b"> <td> <b> <span class="option">SecurityCredentials</span> @@ -1599,7 +1601,7 @@ </p> </td> </tr> - <tr> + <tr class="a"> <td> <b> <span class="option">UserName</span> @@ -1614,7 +1616,7 @@ </p> </td> </tr> - <tr> + <tr class="b"> <td> <b> <span class="option">Password</span> @@ -1804,13 +1806,13 @@ listed below. </p> - <table> - <tr> + <table class="bodyTable"> + <tr class="a"> <th>Option Name</th> <th>Type</th> <th>Description</th> </tr> - <tr> + <tr class="a"> <td><b><span class="option">TopicConnectionFactoryBindingName</span></b></td> <td><code>String</code></td> <td> @@ -1819,7 +1821,7 @@ </p> </td> </tr> - <tr> + <tr class="b"> <td><b><span class="option">TopicBindingName</span></b></td> <td><code>String</code></td> <td> @@ -1873,13 +1875,13 @@ listed below. </p> - <table> - <tr> + <table class="bodyTable"> + <tr class="a"> <th>Option Name</th> <th>Type</th> <th>Description</th> </tr> - <tr> + <tr class="b"> <td><b><span class="option">QueueConnectionFactoryBindingName</span></b></td> <td><code>String</code></td> <td> @@ -1888,7 +1890,7 @@ </p> </td> </tr> - <tr> + <tr class="a"> <td><b><span class="option">QueueBindingName</span></b></td> <td><code>String</code></td> <td> @@ -1939,20 +1941,20 @@ The various options for <code>SMTPAppender</code> are summarized in the following table. </p> - <table> - <tr> + <table class="bodyTable"> + <tr class="a"> <th>Option Name</th> <th>Type</th> <th>Description</th> </tr> - <tr> + <tr class="b"> <td><b><span class="option">SMTPHost</span></b></td> <td><code>String</code></td> <td> The host name of the SMTP server. This parameter is mandatory. </td> </tr> - <tr> + <tr class="a"> <td><b><span class="option">To</span></b></td> <td><code>String</code></td> <td> @@ -1960,7 +1962,7 @@ be specified by using several <To> elements. </td> </tr> - <tr> + <tr class="b"> <td><b><span class="option">From</span></b></td> <td><code>String</code></td> <td> @@ -1968,7 +1970,7 @@ <code>SMTPAppender</code>. </td> </tr> - <tr> + <tr class="a"> <td><b><span class="option">Subject</span></b></td> <td><code>String</code></td> <td> @@ -1990,7 +1992,7 @@ </p> </td> </tr> - <tr> + <tr class="b"> <td><b><span class="option">BufferSize</span></b></td> <td><code>String</code></td> <td> @@ -2001,7 +2003,7 @@ The default size of the cyclic buffer is 512. </td> </tr> - <tr> + <tr class="a"> <td><b><span class="option">Evaluator</span></b></td> <td><code>String</code></td> <td> @@ -2251,8 +2253,8 @@ <code>getGeneratedKeys()</code> method. </p> - <table border="1" cellpadding="4"> - <tr> + <table class="bodyTable" border="1" cellpadding="4"> + <tr class="a"> <th>RDBMS</th> <th> supports @@ -2266,32 +2268,32 @@ SQLDialect support </th> </tr> - <tr> + <tr class="b"> <td>PostgreSQL</td> <td>NO</td> <td>present and used</td> </tr> - <tr> + <tr class="a"> <td>MySQL</td> <td>YES</td> <td>present, but not actually needed or used</td> </tr> - <tr> + <tr class="b"> <td>Oracle</td> <td>YES</td> <td>present, but not actually needed or used</td> </tr> - <tr> + <tr class="a"> <td>DB2</td> <td>YES</td> <td>not present, and not needed or used</td> </tr> - <tr> + <tr class="b"> <td>MsSQL</td> <td>YES</td> <td>not present, and not needed or used</td> </tr> - <tr> + <tr class="a"> <td>HSQL</td> <td>NO</td> <td>present and used</td> @@ -2324,35 +2326,35 @@ <p> The <em>logging_event</em> table contains the following fields: </p> - <table> - <tr> + <table class="bodyTable"> + <tr class="a"> <th>Field</th> <th>Type</th> <th>Description</th> </tr> - <tr> + <tr class="b"> <td><b>timestmp</b></td> <td><code>big int</code></td> <td>The timestamp that was valid at the logging event's creation.</td> </tr> - <tr> + <tr class="a"> <td><b>formatted_message</b></td> <td><code>text</code></td> <td>The message that has been added to the logging event, after formatting with <code>org.slf4j.impl.MessageFormatter</code>, in case object were passed along with the message.</td> </tr> - <tr> + <tr class="b"> <td><b>logger_name</b></td> <td><code>varchar</code></td> <td>The name of the logger used to issue the logging request.</td> </tr> - <tr> + <tr class="a"> <td><b>level_string</b></td> <td><code>varchar</code></td> <td>The level of the logging event.</td> </tr> - <tr> + <tr class="b"> <td><b>reference_flag</b></td> <td><code>smallint</code></td> <td> @@ -2370,27 +2372,27 @@ </p> </td> </tr> - <tr> + <tr class="a"> <td><b>caller_filename</b></td> <td><code>varchar</code></td> <td>The name of the file where the logging request was issued.</td> </tr> - <tr> + <tr class="b"> <td><b>caller_class</b></td> <td><code>varchar</code></td> <td>The class where the logging request was issued.</td> </tr> - <tr> + <tr class="a"> <td><b>caller_method</b></td> <td><code>varchar</code></td> <td>The name of the method where the logging request was issued.</td> </tr> - <tr> + <tr class="b"> <td><b>caller_line</b></td> <td><code>char</code></td> <td>The line number where the logging request was issued.</td> </tr> - <tr> + <tr class="a"> <td><b>event_id</b></td> <td><code>int</code></td> <td>The database id of the logging event.</td> @@ -2403,23 +2405,23 @@ It contains these fields: </p> - <table> - <tr> + <table class="bodyTable"> + <tr class="a"> <th>Field</th> <th>Type</th> <th>Description</th> </tr> - <tr> + <tr class="b"> <td><b>event_id</b></td> <td><code>int</code></td> <td>The database id of the logging event.</td> </tr> - <tr> + <tr class="a"> <td><b>mapped_key</b></td> <td><code>varchar</code></td> <td>The key of the <code>MDC</code> property</td> </tr> - <tr> + <tr class="b"> <td><b>mapped_value</b></td> <td><code>text</code></td> <td>The value of the <code>MDC</code> property</td> @@ -2430,23 +2432,23 @@ The <em>logging_event_exception</em> table contains the following fields: </p> - <table> - <tr> + <table class="bodyTable"> + <tr class="a"> <th>Field</th> <th>Type</th> <th>Description</th> </tr> - <tr> + <tr class="b"> <td><b>event_id</b></td> <td><code>int</code></td> <td>The database id of the logging event.</td> </tr> - <tr> + <tr class="a"> <td><b>i</b></td> <td><code>smallint</code></td> <td>The index of the line in the full stack trace.</td> </tr> - <tr> + <tr class="b"> <td><b>trace_line</b></td> <td><code>varchar</code></td> <td>The corresponding line</td> @@ -2759,13 +2761,13 @@ Here are its options: </p> - <table> - <tr> + <table class="bodyTable"> + <tr class="a"> <th>Option Name</th> <th>Type</th> <th>Description</th> </tr> - <tr> + <tr class="b"> <td> <b> <span class="option">SyslogHost</span> @@ -2778,7 +2780,7 @@ The host name of the syslog server. </td> </tr> - <tr> + <tr class="a"> <td> <b> <span class="option">Port</span> @@ -2792,7 +2794,7 @@ to change the default value, that is <em>514</em>. </td> </tr> - <tr> + <tr class="b"> <td> <b> <span class="option">Facility</span> @@ -2814,7 +2816,7 @@ </p> </td> </tr> - <tr> + <tr class="a"> <td> <b> <span class="option">SuffixPattern</span> @@ -2964,62 +2966,62 @@ <p>The <em>access_event</em> table's fields are described below:</p> - <table> - <tr> + <table class="bodyTable"> + <tr class="a"> <th>Field</th> <th>Type</th> <th>Description</th> </tr> - <tr> + <tr class="a"> <td><b>timestmp</b></td> <td><code>big int</code></td> <td>The timestamp that was valid at the access event's creation.</td> </tr> - <tr> + <tr class="b"> <td><b>requestURI</b></td> <td><code>varchar</code></td> <td>The URI that was requested.</td> </tr> - <tr> + <tr class="a"> <td><b>requestURL</b></td> <td><code>varchar</code></td> <td>The URL that was requested. This is a string composed of the request method, the request URI and the request protocol. </td> </tr> - <tr> + <tr class="b"> <td><b>remoteHost</b></td> <td><code>varchar</code></td> <td>The name of the remote host.</td> </tr> - <tr> + <tr class="a"> <td><b>remoteUser</b></td> <td><code>varchar</code></td> <td> The name of the remote user. </td> </tr> - <tr> + <tr class="b"> <td><b>remoteAddr</b></td> <td><code>varchar</code></td> <td>The remote IP address.</td> </tr> - <tr> + <tr class="a"> <td><b>protocol</b></td> <td><code>varchar</code></td> <td>The request protocol, like <em>HTTP</em> or <em>HTTPS</em>.</td> </tr> - <tr> + <tr class="b"> <td><b>method</b></td> <td><code>varchar</code></td> <td>The request method, usually <em>GET</em> or <em>POST</em>.</td> </tr> - <tr> + <tr class="a"> <td><b>serverName</b></td> <td><code>varchar</code></td> <td>The name of the server that issued the request.</td> </tr> - <tr> + <tr class="b"> <td><b>event_id</b></td> <td><code>int</code></td> <td>The database id of the access event.</td> @@ -3031,23 +3033,23 @@ requests. The information is organised as shown below: </p> - <table> - <tr> + <table class="bodyTable"> + <tr class="a"> <th>Field</th> <th>Type</th> <th>Description</th> </tr> - <tr> + <tr class="a"> <td><b>event_id</b></td> <td><code>int</code></td> <td>The database id of the corresponding access event.</td> </tr> - <tr> + <tr class="b"> <td><b>header_key</b></td> <td><code>varchar</code></td> <td>The header name, for example <em>User-Agent</em>.</td> </tr> - <tr> + <tr class="a"> <td><b>header_value</b></td> <td><code>varchar</code></td> <td>The header value, for example <em>Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1) Gecko/20061010 Firefox/2.0</em></td> @@ -3060,13 +3062,13 @@ described below. </p> - <table> - <tr> + <table class="bodyTable"> + <tr class="a"> <th>Option Name</th> <th>Type</th> <th>Description</th> </tr> - <tr> + <tr class="b"> <td> <b> <span class="option">insertHeaders</span> Modified: logback/trunk/logback-site/src/site/pages/manual/architecture.html ============================================================================== --- logback/trunk/logback-site/src/site/pages/manual/architecture.html (original) +++ logback/trunk/logback-site/src/site/pages/manual/architecture.html Tue Mar 6 20:11:05 2007 @@ -4,6 +4,8 @@ <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <title>Chapter 2: Architecture</title> <link rel="stylesheet" type="text/css" media="screen" href="../css/site.css" /> +<link rel="stylesheet" type="text/css" media="print" href="../css/print.css" /> + </head> <body> <script> Modified: logback/trunk/logback-site/src/site/pages/manual/contextSelector.html ============================================================================== --- logback/trunk/logback-site/src/site/pages/manual/contextSelector.html (original) +++ logback/trunk/logback-site/src/site/pages/manual/contextSelector.html Tue Mar 6 20:11:05 2007 @@ -4,6 +4,8 @@ <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <title>Chapter 8: Context Selector</title> <link rel="stylesheet" type="text/css" media="screen" href="../css/site.css" /> +<link rel="stylesheet" type="text/css" media="print" href="../css/print.css" /> + </head> <body> <script> 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 Tue Mar 6 20:11:05 2007 @@ -4,6 +4,8 @@ <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <title>Chapter 6: Filters</title> <link rel="stylesheet" type="text/css" media="screen" href="../css/site.css" /> +<link rel="stylesheet" type="text/css" media="print" href="../css/print.css" /> + </head> <body> <script> Modified: logback/trunk/logback-site/src/site/pages/manual/introduction.html ============================================================================== --- logback/trunk/logback-site/src/site/pages/manual/introduction.html (original) +++ logback/trunk/logback-site/src/site/pages/manual/introduction.html Tue Mar 6 20:11:05 2007 @@ -4,6 +4,8 @@ <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <title>Chapter 1: Introduction</title> <link rel="stylesheet" type="text/css" media="screen" href="../css/site.css" /> +<link rel="stylesheet" type="text/css" media="print" href="../css/print.css" /> + </head> <body> <script> @@ -206,7 +208,7 @@ </ol> <a name="BuildingLogback"></a> - <h3>Building logback</h3> + <h2>Building logback</h2> <!-- @@ -220,20 +222,29 @@ --> - <p>Like many java applications today, logback relies on <a - href="http://maven.apache.org"> Maven 2</a> as its build tool. Maven - 2 is a free open source build tool that requires one or more build - files names <em>pom.xml</em> which already ship with logback - distributions. + <p>Logback relies on <a href="http://maven.apache.org">Maven2</a> as + its build tool. Maven2 is a widely-used open-source build tool. + </p> + + <p>Once you have installed Maven2, building the logback project, + including all its modules, should be as easy as issuing a <code>mvn + package</code> command in a terminal or command window from within + the directory where you unarchived the logback distribution + file. Maven will automatically download the required external + libraries and use them. However, certain artefacts cannot be + downloaded from the Maven2 repository. At present, time only the JMS + API from from SUN Inc. needs to be downloaded and installed + separately into your local repository. + </p> + + <p>You can manually download the <a + href="http://java.sun.com/products/jms/docs.html">JMS API from + Sun</a>. Once you have downloaded the <em>jms.jar</em> file, you can + install it in your local Maven 2 repository by issuing the command: </p> - <p>Building all logback modules is mostly done by issuing the - <em>mvn package</em> line in a terminal or command window. Maven - will automatically download the required external libraries and use - them. However, certain artefacts cannot be downloaded from the - Maven2 repository. Libraries such as <code>JMS</code> from SUN Inc. - need to be downloaded and installed separately into your local - repository. + <p class="source">mvn install:install-file -DgroupId=javax.jms -DartifactId=jms -Dversion=1.1 / + -Dpackaging=jar -Dfile=/path/to/jms.jar.file </p> <p>Logback distributions contain complete source code such that you Modified: logback/trunk/logback-site/src/site/pages/manual/joran.html ============================================================================== --- logback/trunk/logback-site/src/site/pages/manual/joran.html (original) +++ logback/trunk/logback-site/src/site/pages/manual/joran.html Tue Mar 6 20:11:05 2007 @@ -4,6 +4,8 @@ <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <title>Chapter3: Logback configuration</title> <link rel="stylesheet" type="text/css" media="screen" href="../css/site.css" /> +<link rel="stylesheet" type="text/css" media="print" href="../css/print.css" /> + </head> <body> <script> Modified: logback/trunk/logback-site/src/site/pages/manual/layouts.html ============================================================================== --- logback/trunk/logback-site/src/site/pages/manual/layouts.html (original) +++ logback/trunk/logback-site/src/site/pages/manual/layouts.html Tue Mar 6 20:11:05 2007 @@ -720,8 +720,8 @@ <td align="center"> <b>ex</b>{<em>length</em>} <br /> <b>throwable</b>{<em>length</em>} <br /> - <b>ex{length, evaluator-1, ..., evaluator-n}</b> - <b>throwable{length, evaluator-1, ..., evaluator-n}</b> + <b>ex</b>{length, evaluator-1, ..., evaluator-n} <br /> + <b>throwable</b>{length, evaluator-1, ..., evaluator-n} </td> <td> @@ -948,12 +948,12 @@ <td align="center"><pre>[main.Name ]</pre></td> </tr> <tr class="b"> - <td align="center">[%20.-20logger]</td> + <td align="center">[%20.20logger]</td> <td align="center">main.Name</td> <td align="center"><pre>[ main.Name]</pre></td> </tr> <tr class="a"> - <td align="center">[%-10.10logger]</td> + <td align="center">[%10.10logger]</td> <td align="center">main.foo.foo.bar.Name</td> <td align="center"><pre>[o.bar.Name]</pre></td> </tr> @@ -986,7 +986,7 @@ </appender></pre></div> - + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX <h4>Evaluators</h4> <p> @@ -1087,14 +1087,15 @@ } }</pre></div> <p> - This excerpt does nothing too fancy. Five logging requests - are issued, the third one being different from the others. + The above application does nothing too fancy. Five logging + requests are issued, the third one being different from the + others. </p> <p> - When a logging request is sent, the corresponding logging - event will pass through the evaluation process. Here, - the third request will match the evaluation, - causing its caller data to be displayed. + When a logging request is sent, the corresponding logging event + will pass through the evaluation process. Here, the third + request will match the evaluation criteria, causing its caller + data to be displayed. </p> <p> Here is the output of the @@ -1109,23 +1110,27 @@ 0 [main] DEBUG - I know me 4</pre></div> - <p> - Of course, one can change the expression to match a real - world situation. An expression testing logger name and - request level could also be meaningful: all logging requests of - level <em>WARN</em> and up, coming from a sensible part of an application - like a financial transaction module, would have their caller data displayed. - </p> - <p><b>Important:</b> With the <em>caller</em> conversion specifier, the data is - displayed when <em>the expression evaluates to <b>true</b>.</em></p> - <p> - Let us look at a different situation. When exceptions are included in - a logging request, their stack trace is usually displayed. However, in some cases, - one might want to supress the stack trace of specific exception. + <p>One can change the expression to match a real world + situation. An expression testing logger name and request level + could also be meaningful: all logging requests of level + <em>WARN</em> and up, coming from a sensible part of an + application like a financial transaction module, would have their + caller data displayed. + </p> + + <p><b>Important:</b> With the <em>caller</em> conversion + specifier, the data is displayed when <em>the expression evaluates + to <b>true</b>.</em></p> + + <p>Now, let us look at a different situation. When exceptions are + included in a logging request, their stack trace is usually + displayed. However, in some cases, one might want to supress the + stack trace of specific exception. </p> + <p>The java code shown below creates five log requests, each one - with an exception. However, we do not want to have the stack trace of the - third request to be output.</p> + with an exception. However, we do not want to have the stack trace + of the third request to be output.</p> <div class="source"><pre>package chapter5; Modified: logback/trunk/logback-site/src/site/pages/manual/mdc.html ============================================================================== --- logback/trunk/logback-site/src/site/pages/manual/mdc.html (original) +++ logback/trunk/logback-site/src/site/pages/manual/mdc.html Tue Mar 6 20:11:05 2007 @@ -4,6 +4,8 @@ <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <title>Chapter 7: Diagnostic Context</title> <link rel="stylesheet" type="text/css" media="screen" href="../css/site.css" /> +<link rel="stylesheet" type="text/css" media="print" href="../css/print.css" /> + </head> <body> <script> Modified: logback/trunk/logback-site/src/site/pages/team.html ============================================================================== --- logback/trunk/logback-site/src/site/pages/team.html (original) +++ logback/trunk/logback-site/src/site/pages/team.html Tue Mar 6 20:11:05 2007 @@ -28,11 +28,14 @@ <table> <tr> <td><img src="images/jeannoel.gif" alt="Jean-Noel"/></td> - <td> - Jean-Noel Charpin has been designing and developing object oriented software - and decision making systems since 1998. He is particularly interested in - translating lean manufacturing principles and practices to the software development - domain in order to improve quality and reliability. + + <td> + <p>Jean-Noel Charpin has been designing and developing object + oriented software and decision making systems since 1998. He + is particularly interested in translating lean manufacturing + principles and practices to the software development domain + in order to improve quality and reliability. + </p> </td> </tr> <tr> @@ -42,7 +45,7 @@ since 1996. He is the founder of the log4j, slf4j and logback projects. Ceki enjoys writing software, a task far more difficult and time-consuming than what it seems at - first sight. His interests range from cryptography, systems + first sight. His interests range from cryptography, system monitoring and testing to application interoperability. </p> Modified: logback/trunk/logback-site/src/site/pages/templates/right.js ============================================================================== --- logback/trunk/logback-site/src/site/pages/templates/right.js (original) +++ logback/trunk/logback-site/src/site/pages/templates/right.js Tue Mar 6 20:11:05 2007 @@ -1,6 +1,6 @@ document.write('<p class="menu_header">New and noteworthy</p>') -document.write('<p class="menu"><a href="10reasons.ppt">10 reasons for migrating</a>') +document.write('<p class="menu"><a href="'+prefix+'10reasons.ppt">10 reasons for migrating</a>') document.write('<p class="menu"><a href="http://javablog.smilehouse.com/blog/default/Java/2007/02/02/Writing-rotated-and-compressed-access-logs-with-logback">Writing rotated and compressed access logs</a>')
participants (1)
-
noreply.ceki@qos.ch