HTTP Logger Protocol, version 1

The http-logger is a noninteractive tool used to log interactions between Opera and the web servers it accesses.

BNF

Following is the grammar of the service, "http-logger":

  PROTOCOL ::= EVENT* ;

  ###
  # Events (messages from debugging host to debugger)
  #

  EVENT ::= REQUEST
          | RESPONSE
          ;
  ##
  # Events
  #

  REQUEST ::= "<request>"
                REQUEST-ID
                WINDOW-ID
                TIME
                HEADER
              "</request>" ;

  # The RESPONSE does not have it's own id, but refers to the generating REQUEST-ID

  RESPONSE ::= "<response>"
                 REQUEST-ID
                 WINDOW-ID
                 TIME
                 HEADER
               "</response>" ;

  ##
  # Other data types
  #

  # REQUEST-ID is an identifier for the request; it is not necessarily unique across
  # time, as it is just the memory address of the request object. 

  REQUEST-ID ::= "<request-id>" UNSIGNED "</request-id>" ;

  # Timestamp of the message, in milliseconds since 1970-01-01 00:00 UTC
  # (be sure not to rely on the time being correct - this is client time, and
  # may be wildly different than the host time)

  TIME ::= "<time>" FLOAT "</time>" ;

  # Header of the request/response, i.e. the HTTP data up until the first
  # occurence of CR+LF+CR+LF, inclusive.

  HEADER ::= "<header>" TEXT "</header>" ;

  FLOAT ::= [0-9]+ "." [0-9]+ ;

  ###
  # From ecmascript-debugger-protocol.html
  #

  # The window ID is shared across scope. Notably, it's the same as in the ecmascript debugger.
  # INTERNAL: The value is from Window::id

  WINDOW-ID ::= "<window-id>" UNSIGNED "</window-id>" ;

  UNSIGNED ::= [0-9]+ ;

  TEXT ::= textual-data ;