Changeset 1069

Show
Ignore:
Timestamp:
06/05/08 04:19:51 (4 months ago)
Author:
kris
Message:

Added better support for logging

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/mango/net/servlet/Servlet.d

    r1052 r1069  
    1515private import  tango.time.Time; 
    1616 
     17public  import  tango.util.log.Log; 
     18 
    1719public  import  tango.net.http.HttpConst, 
    1820                tango.net.http.HttpHeaders; 
     
    5456        void init (ServletConfig config) 
    5557        { 
     58        } 
     59 
     60        /********************************************************************** 
     61 
     62                return an optional logger instance 
     63 
     64        **********************************************************************/ 
     65 
     66        Logger logger () 
     67        { 
     68                return null; 
    5669        } 
    5770} 
  • trunk/mango/net/servlet/ServletProvider.d

    r1047 r1069  
    1414 
    1515private import  tango.net.Uri; 
     16 
     17private import  tango.util.log.Log; 
     18 
     19private import  tango.time.StopWatch; 
    1620 
    1721private import  tango.text.Regex, 
     
    6872class ServletProvider : ServiceProvider 
    6973{ 
     74        private Logger                  log; 
    7075        private QueuedCache             cache; 
    7176        private HashMap                 proxies; 
     
    8186        **********************************************************************/ 
    8287 
    83         this (uint urls = 2048) 
     88        this (Logger log, uint urls = 2048) 
    8489        { 
    8590                // small, low contention hashmap for proxies and contexts 
     
    9398                // named '/', permitting usage of context.getName()  
    9499                // to be greatly simplified 
    95                 addContext (new ServletContext (""));  
     100                addContext (new ServletContext ("", log));  
     101 
     102                // remember logger 
     103                this.log = log; 
    96104        } 
    97105 
     
    376384                PathMapping             pm; 
    377385                char[]                  path; 
     386                StopWatch               timer; 
    378387                ServletRequest          request; 
    379388                ServletResponse         response; 
    380389                bool                    addToCache; 
     390         
     391                // begin timer 
     392                timer.start; 
    381393 
    382394                // we know what these are since we created them (above) 
     
    411423 
    412424                    // execute servlet 
    413                     pm.mapping.proxy.getServlet.service (request, response); 
     425                    auto servlet = pm.mapping.proxy.getServlet; 
     426                    servlet.service (request, response); 
     427         
     428                    // log execution time 
     429                    auto log = servlet.logger; 
     430                    if (log) 
     431                        log.info (Log.format() ("took {}us", timer.microsec)); 
    414432 
    415433                    // flush output on behalf of servlet ... 
  • trunk/mango/net/servlet/tools/AdminServlet.d

    r1062 r1069  
    265265        this (ServletProvider provider, char[] name) 
    266266        { 
    267                 super (name); 
     267                auto servlet = new AdminServlet; 
     268                super (name, servlet.log); 
    268269                provider.addContext (this); 
    269                 IRegisteredServlet logger = provider.addServlet (new AdminServlet(), "logger", this); 
     270                auto logger = provider.addServlet (servlet, "logger", this); 
    270271                provider.addMapping ("/logger", logger); 
    271272        }