Changeset 3104


Ignore:
Timestamp:
05/12/07 15:12:51 (12 years ago)
Author:
pjkersha
Message:

ndg.security.client/ndg/security/client/LogClient.py: started SOAPHandler log handler class - will enable web service to integrate into standard Python logging framework.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/python/ndg.security.client/ndg/security/client/LogClient.py

    r2909 r3104  
    2121import sys 
    2222import os 
     23import logging 
    2324 
    2425from LogIO import * 
     26 
     27 
     28class SOAPHandler(Handler): 
     29    """ 
     30    A handler class which writes logging records, appropriately formatted, 
     31    over a SOAP interface to logging web service 
     32    """ 
     33    def __init__(self, *args, **kw): 
     34        """Initialize the handler. 
     35 
     36        """ 
     37        Handler.__init__(self) 
     38        self._logClnt = LogClient(*args, **kw) 
     39 
     40    def emit(self, record): 
     41        """ 
     42        Emit a record. 
     43 
     44        If a formatter is specified, it is used to format the record. 
     45        The record is then written to the stream with a trailing newline 
     46        [N.B. this may be removed depending on feedback]. If exception 
     47        information is present, it is formatted using 
     48        traceback.print_exception and appended to the stream. 
     49        """ 
     50        try: 
     51            msg = self.format(record) 
     52            fs = "%s\n" 
     53            if not hasattr(types, "UnicodeType"): #if no unicode support... 
     54                self.stream.write(fs % msg) 
     55            else: 
     56                try: 
     57                    self.stream.write(fs % msg) 
     58                except UnicodeError: 
     59                    self.stream.write(fs % msg.encode("UTF-8")) 
     60            self.flush() 
     61        except (KeyboardInterrupt, SystemExit): 
     62            raise 
     63        except: 
     64            self.handleError(record) 
    2565 
    2666#_____________________________________________________________________________ 
     
    3979    #_________________________________________________________________________ 
    4080    def __init__(self,  
    41                  wsdl=None, 
     81                 uri=None, 
    4282                 signingCertFilePath=None, 
    4383                 signingPriKeyFilePath=None, 
     
    4585                 traceFile=None): 
    4686        """ 
    47         wsdl:                  WSDL URI for Logging WS.  Setting  
     87        uri:                  URI for Logging WS.  Setting  
    4888                               it will set the Service Proxy 
    4989        traceFile:             set to file object such as sys.stderr to  
     
    5191 
    5292        self.__srvPx = None 
    53         self.__wsdl = None 
    54          
    55          
    56         if wsdl: 
    57             self.__setWSDL(wsdl) 
     93        self.__uri = None 
     94         
     95         
     96        if uri: 
     97            self.__setWSDL(uri) 
    5898            
    5999        self.__traceFile = traceFile 
     
    65105          
    66106        # Instantiate Logging WS proxy 
    67         if self.__wsdl: 
     107        if self.__uri: 
    68108            self.serviceProxy() 
    69109         
    70110 
    71111    #_________________________________________________________________________ 
    72     def __setWSDL(self, wsdl): 
    73          
    74         if not isinstance(wsdl, basestring): 
     112    def __setWSDL(self, uri): 
     113         
     114        if not isinstance(uri, basestring): 
    75115            raise LogClientError, "Logging WSDL URI must be a valid string" 
    76116         
    77         self.__wsdl = wsdl 
    78          
    79     wsdl = property(fset=__setWSDL,doc="Set Logging WSDL URI") 
     117        self.__uri = uri 
     118         
     119    uri = property(fset=__setURI,doc="Set Logging WSDL URI") 
    80120     
    81121         
    82122    #_________________________________________________________________________ 
    83     def serviceProxy(self, wsdl=None): 
     123    def serviceProxy(self, uri=None): 
    84124        """Set the WS proxy for the Logging""" 
    85         if wsdl: 
    86             self.__setWSDL(wsdl) 
     125        if uri: 
     126            self.__setURI(uri) 
    87127 
    88128        try: 
    89             self.__srvPx = ServiceProxy(self.__wsdl,  
    90                                         use_wsdl=True,  
     129            self.__srvPx = ServiceProxy(self.__uri,  
     130                                        use_uri=True,  
    91131                                        tracefile=self.__traceFile) 
    92132        except HTTPResponse, e: 
    93133            raise LogClientError, \ 
    94                 "Error initialising WSDL Service Proxy for \"%s\": %s %s" % \ 
    95                 (self.__wsdl, e.status, e.reason) 
     134                "Error initialising URI Service Proxy for \"%s\": %s %s" % \ 
     135                (self.__uri, e.status, e.reason) 
    96136 
    97137        except Exception, e: 
    98138            raise LogClientError, \ 
    99                     "Initialising WSDL Service Proxy: " + str(e) 
     139                    "Initialising URI Service Proxy: " + str(e) 
    100140 
    101141                                     
Note: See TracChangeset for help on using the changeset viewer.