The console-logger is a noninteractive tool used to log messages sent to Opera's console.
All messages sent to the Opera console from the various modules in Opera are captured and displayed.
A logged datum has six parts:
Here is the grammar describing the data. Some of the data elements are described in more detail below.
###
# The protocol is a one-way XML-based protocol, with data flowing from the
# host to the debugger client.
#
# The service name of the Console logger is "console-logger".
#
PROTOCOL ::= MESSAGE* ;
MESSAGE ::= "<message>"
TIME
URI?
CONTEXT?
SOURCE?
SEVERITY?
WINDOW-ID
DESCRIPTION
"</message>"
;
# The number of seconds since 1970-01-01T00:00:00Z.
TIME ::= "<time>"
UNSIGNED
"</time>"
;
# The URL of the entity (document, script, style file, etc) that caused the
# message to be generated.
URI ::= "<uri>"
TEXT
"</uri>"
;
# The context in which the message was generated; it is intended for human
# consumption and provides additional information about the context for the
# message.
CONTEXT ::= "<context>"
TEXT
"</context>"
;
# The component in Opera that generated the message
SOURCE ::= "<source>"
( "ecmascript" | "java" | "m2" | "network" | "xml" | "html" |
"css" | "xslt" | "svg" | "bittorrent" | "voice" | "widget" |
"selftest" )
"</source>"
;
SEVERITY ::= "<severity>"
( "debug" | "verbose" | "information" | "error" | "critical" )
"</severity>"
;
# Description of the error. Sometimes this message only makes sense when
# displayed in a monospace font.
DESCRIPTION ::= "<description>"
TEXT
"</description>"
;
# 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>" ;
###
# Primitive data.
#
# You may *NOT* assume that an UNSIGNED received from the host fits
# in 32 bits, but you may assume that 64 bits is enough.
#
# You must *NOT* send an UNSIGNED to the host that does not fit in 32
# bits unless it was received from the host.
#
UNSIGNED ::= [0-9]+ ;
TEXT ::= BASE64-ENCODED-DATA | textual-data ;
BASE64-ENCODED-DATA ::= "<base64-encoded-data>" textual-data "</base64-encoded-data>" ;