mbecke      2004/07/05 13:55:53

  Modified:    httpclient/xdocs Tag: HTTPCLIENT_2_0_BRANCH logging.xml
  Log:
  Logging guide updates.
  
  PR: 29549
  Submitted by: Michael Becke
  Reviewed by: Oleg Kalnichevski
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.11.2.2  +128 -46   jakarta-commons/httpclient/xdocs/logging.xml
  
  Index: logging.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/httpclient/xdocs/logging.xml,v
  retrieving revision 1.11.2.1
  retrieving revision 1.11.2.2
  diff -u -r1.11.2.1 -r1.11.2.2
  --- logging.xml       21 Apr 2004 04:17:46 -0000      1.11.2.1
  +++ logging.xml       5 Jul 2004 20:55:53 -0000       1.11.2.2
  @@ -4,64 +4,146 @@
   
      <properties>
         <title>HttpClient Logging Practices</title>
  -      <author email="[EMAIL PROTECTED]">Jeff Dever</author>
  +      <author email="[EMAIL PROTECTED]">Commons HttpClient</author>
         <revision>$Id$</revision>
      </properties>
   
      <body>
  -
         <section name="Logging Practices">
            <p>
               <em>HttpClient</em> utilizes the logging interface provided by the
               <a href="http://jakarta.apache.org/commons/logging/";>
  -            Jakarta Commons Logging</a> package.  Commons Logging provides
  +            Jakarta Commons Logging</a> package.  <em>Commons Logging</em> provides
               a simple and generalized 
               <a href="http://jakarta.apache.org/commons/logging/api/index.html";>
  -            log interface</a> to various logging packages.  By using the
  -            Commons Logging configuration, HttpClient can be configured
  -            for a variety of logging behaviours.
  -         </p><p>
  -         </p><p>
  -            There are two specific types of loggers used within
  -            <em>HttpClient</em>: the standard <code>log</code> used for each 
  -            class and the <code>wireLog</code> used for wire messages.  
  -            Commons Logging allows for various logging systems to do the
  -            actual output.  The most basic is SimpleLog which uses stdout
  -            to write log messages.  All the following examples are shown with
  -            SimpleLog to highlight the utility within <em>HttpClient</em>
  -         </p><p>
  -            <u>log</u><br />
  -            The logging output can be configured on a class by class basis if
  -            desired.  This is accomplished by setting a system property for
  -            each class.  For example, if you wanted to see extremely detailed 
  -            information on authentication routines, you could turn up the 
  -            logging level for the Authenticator by setting the following 
  -            property:<br />
  -            
<code>org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient.Authenticator=trace</code><br
 />
  -            The default log level for all classes can be set to a default by
  -            using the following:<br />
  -            <code>org.apache.commons.logging.simplelog.defaultlog=info</code><br />
  +            log interface</a> to various logging packages.  By using
  +            <em>Commons Logging</em>, <em>HttpClient</em> can be configured
  +            for a variety of different logging behaviours.
            </p><p>
  -            <u>wireLog</u><br />
  -            There is one log that cuts across several classes that is used for
  -            logging wire messages.  <i>Careful when turning this on as 
  -            potentially a huge volume of data may be written, some of it in 
  -            binary format.</i><br />
  -            org.apache.commons.logging.simplelog.log.httpclient.wire=debug
  -         </p><p>
  -            When troubleshooting a problem, it is good to turn on the log to find 
out
  -            what is going on, both over the wire and in httpclient.  The following
  -            statements can be used to configure the logger from within your java
  -            application:
  -            <blockquote>
  -             System.setProperty("org.apache.commons.logging.Log", 
"org.apache.commons.logging.impl.SimpleLog");<br />
  -             
System.setProperty("org.apache.commons.logging.simplelog.showdatetime", "true");<br />
  -             
System.setProperty("org.apache.commons.logging.simplelog.log.httpclient.wire", 
"debug");<br />
  -             
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient",
 "debug");<br />
  -            </blockquote>
  +            <em>HttpClient</em> performs two different kinds of logging: the 
standard
  +            context logging used within each class, and wire logging.            
  +         </p>
  +         <subsection name="Context Logging">
  +         <p>
  +            Context logging contains information about the internal operation
  +            of HttpClient as it performs HTTP requests.  Each class has its own
  +            log named according to the class's fully qualified name.  For example
  +            the class <code>HttpClient</code> has a log named 
  +            <code>org.apache.commons.httpclient.HttpClient</code>.  Since all 
classes
  +            follow this convention it is possible to configure context logging for 
  +            all classes using the single log named 
<code>org.apache.commons.httpclient</code>.
            </p>
  +         </subsection>
  +         <subsection name="Wire Logging">
  +         <p>
  +            The wire log is used to log all data transmitted to and from servers 
when
  +            executing HTTP requests.  This log should only be enabled to debug 
problems,
  +            as it will produce an extremely large amount of log data, some of it in 
binary
  +            format.
  +         </p>
  +         <p>
  +            Because the content of HTTP requests is usually less important for 
debugging 
  +            than the HTTP headers, these two types of data have been separated into 
  +            different wire logs.  The content log is 
<code>httpclient.wire.content</code> 
  +            and the header log is <code>httpclient.wire.header</code>.
  +         </p>
  +         </subsection>
  +      </section>
  +      <section name="Configuration Examples">
  +          <p>
  +             <em>Commons Logging</em> can delegate to a variety of loggers for 
processing 
  +             the actual output.  Below are configuration examples for <em>Commons 
Logging</em> 
  +             and <em>Log4j</em>.
  +          </p>
  +          <subsection name="Commons Logging Examples">
  +              <p>
  +                 <em>Commons Logging</em> comes with a basic logger called 
  +                 <code>SimpleLog</code>.  This logger writes all logged messages to 
  +                 <code>System.err</code>. The following examples show how to  
configure 
  +                 <em>Commons Logging</em> via system properties to use 
<code>SimpleLog</code>.
  +              </p>
  +              <p>
  +                <b>Note:</b> The system properties must be set before a reference 
to any 
  +                <em>Commons Logging</em> class is made.              
  +              </p>
  +              <p>
  +                <u>Enable header wire + context logging</u> - <b>Best for 
Debugging</b><br />
  +                <blockquote>
  +                 System.setProperty("org.apache.commons.logging.Log", 
"org.apache.commons.logging.impl.SimpleLog");<br />
  +                 
System.setProperty("org.apache.commons.logging.simplelog.showdatetime", "true");<br />
  +                 
System.setProperty("org.apache.commons.logging.simplelog.log.httpclient.wire.header", 
"debug");<br />
  +                 
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient",
 "debug");<br />
  +                </blockquote>
  +              </p>          
  +              <p>
  +                <u>Enable full wire(header and content) + context logging</u><br />
  +                <blockquote>
  +                 System.setProperty("org.apache.commons.logging.Log", 
"org.apache.commons.logging.impl.SimpleLog");<br />
  +                 
System.setProperty("org.apache.commons.logging.simplelog.showdatetime", "true");<br />
  +                 
System.setProperty("org.apache.commons.logging.simplelog.log.httpclient.wire", 
"debug");<br />
  +                 
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient",
 "debug");<br />
  +                </blockquote>
  +              </p>
  +              <p>
  +                <u>Enable just context logging</u><br />
  +                <blockquote>
  +                 System.setProperty("org.apache.commons.logging.Log", 
"org.apache.commons.logging.impl.SimpleLog");<br />
  +                 
System.setProperty("org.apache.commons.logging.simplelog.showdatetime", "true");<br />
  +                 
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient",
 "debug");<br />
  +                </blockquote>
  +             </p>          
  +          </subsection>
  +          <subsection name="Log4j Examples">
  +            <p>
  +                The simplest way to configure <a 
href="http://logging.apache.org/log4j/";>Log4j</a> 
  +                is via a <i>log4j.properties</i> file.  <em>Log4j</em> will 
automatically 
  +                read and configure itself using a file named 
<i>log4j.properties</i> when 
  +                it's present at the root of the application classpath.  Below are 
some 
  +                <em>Log4j</em> configuration examples.
  +            </p>
  +              <p>
  +                <b>Note:</b> <em>Log4j</em> is not included in the 
<em>HttpClient</em> distribution.              
  +              </p>
  +              <p>
  +                <u>Enable header wire + context logging</u> - <b>Best for 
Debugging</b><br />
  +                <blockquote>
  +log4j.rootLogger=INFO, stdout<br />
  +<br />
  +log4j.appender.stdout=org.apache.log4j.ConsoleAppender<br />
  +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout<br />
  +log4j.appender.stdout.layout.ConversionPattern=%5p [%c] %m%n<br />
  +<br />
  +log4j.logger.httpclient.wire.header=DEBUG<br />
  +log4j.logger.org.apache.commons.httpclient=DEBUG<br />
  +                </blockquote>
  +              </p>          
  +              <p>
  +                <u>Enable full wire(header and content) + context logging</u><br />
  +                <blockquote>
  +log4j.rootLogger=INFO, stdout<br />
  +<br />
  +log4j.appender.stdout=org.apache.log4j.ConsoleAppender<br />
  +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout<br />
  +log4j.appender.stdout.layout.ConversionPattern=%5p [%c] %m%n<br />
  +<br />
  +log4j.logger.httpclient.wire=DEBUG<br />
  +log4j.logger.org.apache.commons.httpclient=DEBUG<br />
  +                </blockquote>
  +              </p>
  +              <p>
  +                <u>Enable just context logging</u><br />
  +                <blockquote>
  +log4j.rootLogger=INFO, stdout<br />
  +<br />
  +log4j.appender.stdout=org.apache.log4j.ConsoleAppender<br />
  +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout<br />
  +log4j.appender.stdout.layout.ConversionPattern=%5p [%c] %m%n<br />
  +<br />
  +log4j.logger.org.apache.commons.httpclient=DEBUG<br />
  +                </blockquote>
  +             </p>          
  +          </subsection>
         </section>
  -
      </body>
   
   </document>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to