class QuickBase::Logger

To log QuickBase requests and responses to a file, make an instance of this class and call Client.setLogger( loggerInstance ). Call Client.setLogger( nil ) to turn logging off. The log file is written in CSV format to make it importable by QuickBase.

Attributes

append[R]
file[R]
filename[R]

Public Class Methods

new( filename, append = true ) click to toggle source
# File lib/QuickBaseClient.rb, line 5047
def initialize( filename, append = true )
   @requestEntryNum = @responseEntryNum = 0
   changeLogFile( filename, append )
end

Public Instance Methods

changeLogFile( filename, append = true ) click to toggle source
# File lib/QuickBaseClient.rb, line 5062
def changeLogFile( filename, append = true )
   if @file and @filename and @filename != filename
      closeLogFile()
   end
   begin
      @append = append
      skipHeader = (@append == true and FileTest.exist?( filename ))
      @file = File.open( filename, @append ? "a" : "w" )
      @filename = filename
      @file.print( "entry,request time,dbid,api,request,response time, response" ) unless skipHeader
   rescue StandardError => e
      closeLogFile()
      puts "Logger error: #{e}"
   end
end
closeLogFile() click to toggle source
# File lib/QuickBaseClient.rb, line 5052
def closeLogFile()
   if @file
      @file.close
      @file = nil
      @filename = nil
      @append = true
      @requestEntryNum = @responseEntryNum = 0
   end
end
getTimeString() click to toggle source
# File lib/QuickBaseClient.rb, line 5116
def getTimeString()
   t = Time.now
   t.strftime( "%Y-%m-%d-%H-%M-%S" )
end
logRequest( dbidForRequestURL, api_Request, requestXML ) click to toggle source
# File lib/QuickBaseClient.rb, line 5078
def logRequest( dbidForRequestURL, api_Request, requestXML )
   if @file
      @requestEntryNum += 1
      entry =  "\n#{@requestEntryNum},"
      entry << "#{getTimeString()},"
      entry << "#{dbidForRequestURL},"
      entry << "#{api_Request},"

      maxChars = requestXML.length > 256 ? 256 : requestXML.length

      request = requestXML[0,maxChars]
      request.gsub!( ",", "_" )
      entry << "#{request}"

      @file.print( entry )
   end
end
logResponse( error, responseXML ) click to toggle source
# File lib/QuickBaseClient.rb, line 5096
def logResponse( error, responseXML )
   if @file
      @responseEntryNum += 1

      if @responseEntryNum != @requestEntryNum
         entry =  "\n#{@responseEntryNum},,,,#{getTimeString()},"
      else
         entry =  ",#{getTimeString()},"
      end

      maxChars = responseXML.length > 256 ? 256 : responseXML.length

      response = responseXML[0,maxChars]
      response.gsub!( ",", "_" )
      entry << "#{response}"

      @file.print( entry )
   end
end