{ "type": "interface",
  "qname": "mx.logging.ILogger",
"baseInterfaceNames": [
"org.apache.royale.events.IEventDispatcher"]
,
    "description": "All loggers within the logging framework must implement this interface.",
  "tags": [
  {  "tagName": "playerversion",
         "values": ["Flash 9", "AIR 1.1"]},
      {  "tagName": "productversion",
         "values": ["Flex 3"]},
      {  "tagName": "langversion",
         "values": ["3.0"]}  ],
  "members": [
  { "type": "accessor",
    "access": "read-only",
    "return": "String",
    "qname": "category",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "The category value for the logger.",
    "tags": [
    {  "tagName": "playerversion",
           "values": ["Flash 9", "AIR 1.1"]},
        {  "tagName": "productversion",
           "values": ["Flex 3"]},
        {  "tagName": "return",
           "values": ["String containing the category for this logger."]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ]},
  { "type": "method",
    "qname": "log",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Logs the specified data at the given level.  <p>The String specified for logging can contain braces with an index indicating which additional parameter should be inserted into the String before it is logged. For example &quot;the first additional parameter was {0} the second was {1}&quot; is translated into &quot;the first additional parameter was 10 the second was 15&quot; when called with 10 and 15 as parameters.</p>  Valid values are: <ul> <li><code>LogEventLevel.FATAL</code> designates events that are very harmful and will eventually lead to application failure</li>  <li><code>LogEventLevel.ERROR</code> designates error events that might still allow the application to continue running.</li>  <li><code>LogEventLevel.WARN</code> designates events that could be harmful to the application operation</li>  <li><code>LogEventLevel.INFO</code> designates informational messages that highlight the progress of the application at coarse-grained level.</li>  <li><code>LogEventLevel.DEBUG</code> designates informational level messages that are fine grained and most helpful when debugging an application.</li> </ul>  This String can contain special marker characters of the form {x}, where x is a zero based index that will be replaced with the additional parameters found at that index if specified.  parameter at each &quot;{<code>x</code>}&quot; location, where <code>x</code> is an integer (zero based) index value into the Array of values specified.  <pre>\\n // Get the logger for the mx.messaging.Channel &quot;category&quot;\\n // and send some data to it.\\n var logger:ILogger = Log.getLogger(&quot;mx.messaging.Channel&quot;);\\n logger.log(LogEventLevel.DEBUG, &quot;here is some channel info {0} and {1}&quot;, LogEventLevel.DEBUG, 15.4, true);\\n \\n // This will log the following String as a DEBUG log message:\\n //   &quot;here is some channel info 15.4 and true&quot;\\n </pre>",
    "tags": [
    {  "tagName": "param",
           "values": ["level The level this information should be logged at.", "message The information to log.", "rest Additional parameters that can be subsituted in the str"]},
        {  "tagName": "playerversion",
           "values": ["Flash 9", "AIR 1.1"]},
        {  "tagName": "productversion",
           "values": ["Flex 3"]},
        {  "tagName": "example",
           "values": []},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "void",
      "params": [{ "name": "level", "type": "int"},
    { "name": "message", "type": "String"},
    { "name": "rest", "type": "Array"}]}
  ,
  { "type": "method",
    "qname": "debug",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Logs the specified data using the <code>LogEventLevel.DEBUG</code> level. <code>LogEventLevel.DEBUG</code> designates informational level messages that are fine grained and most helpful when debugging an application.  <p>The string specified for logging can contain braces with an index indicating which additional parameter should be inserted into the string before it is logged. For example &quot;the first additional parameter was {0} the second was {1}&quot; will be translated into &quot;the first additional parameter was 10 the second was 15&quot; when called with 10 and 15 as parameters.</p>  This string can contain special marker characters of the form {x}, where x is a zero based index that will be replaced with the additional parameters found at that index if specified.  parameter at each &quot;{<code>x</code>}&quot; location, where <code>x</code> is an integer (zero based) index value into the Array of values specified.  <pre>\\n // Get the logger for the mx.messaging.Channel &quot;category&quot;\\n // and send some data to it.\\n var logger:ILogger = Log.getLogger(&quot;mx.messaging.Channel&quot;);\\n logger.debug(&quot;here is some channel info {0} and {1}&quot;, 15.4, true);\\n \\n // This will log the following String:\\n //   &quot;here is some channel info 15.4 and true&quot;\\n </pre>",
    "tags": [
    {  "tagName": "param",
           "values": ["message The information to log.", "rest Additional parameters that can be subsituted in the str"]},
        {  "tagName": "playerversion",
           "values": ["Flash 9", "AIR 1.1"]},
        {  "tagName": "productversion",
           "values": ["Flex 3"]},
        {  "tagName": "example",
           "values": []},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "void",
      "params": [{ "name": "message", "type": "String"},
    { "name": "rest", "type": "Array"}]}
  ,
  { "type": "method",
    "qname": "error",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Logs the specified data using the <code>LogEventLevel.ERROR</code> level. <code>LogEventLevel.ERROR</code> designates error events that might still allow the application to continue running.  <p>The string specified for logging can contain braces with an index indicating which additional parameter should be inserted into the string before it is logged. For example &quot;the first additional parameter was {0} the second was {1}&quot; will be translated into &quot;the first additional parameter was 10 the second was 15&quot; when called with 10 and 15 as parameters.</p>  This String can contain special marker characters of the form {x}, where x is a zero based index that will be replaced with the additional parameters found at that index if specified.  parameter at each &quot;{<code>x</code>}&quot; location, where <code>x</code> is an integer (zero based) index value into the Array of values specified.  <pre>\\n // Get the logger for the mx.messaging.Channel &quot;category&quot;\\n // and send some data to it.\\n var logger:ILogger = Log.getLogger(&quot;mx.messaging.Channel&quot;);\\n logger.error(&quot;here is some channel info {0} and {1}&quot;, 15.4, true);\\n \\n // This will log the following String:\\n //   &quot;here is some channel info 15.4 and true&quot;\\n </pre>",
    "tags": [
    {  "tagName": "param",
           "values": ["message The information to log.", "rest Additional parameters that can be subsituted in the str"]},
        {  "tagName": "playerversion",
           "values": ["Flash 9", "AIR 1.1"]},
        {  "tagName": "productversion",
           "values": ["Flex 3"]},
        {  "tagName": "example",
           "values": []},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "void",
      "params": [{ "name": "message", "type": "String"},
    { "name": "rest", "type": "Array"}]}
  ,
  { "type": "method",
    "qname": "fatal",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Logs the specified data using the <code>LogEventLevel.FATAL</code> level. <code>LogEventLevel.FATAL</code> designates events that are very harmful and will eventually lead to application failure  <p>The string specified for logging can contain braces with an index indicating which additional parameter should be inserted into the string before it is logged. For example &quot;the first additional parameter was {0} the second was {1}&quot; will be translated into &quot;the first additional parameter was 10 the second was 15&quot; when called with 10 and 15 as parameters.</p>  This String can contain special marker characters of the form {x}, where x is a zero based index that will be replaced with the additional parameters found at that index if specified.  parameter at each &quot;{<code>x</code>}&quot; location, where <code>x</code> is an integer (zero based) index value into the Array of values specified.  <pre>\\n // Get the logger for the mx.messaging.Channel &quot;category&quot;\\n // and send some data to it.\\n var logger:ILogger = Log.getLogger(&quot;mx.messaging.Channel&quot;);\\n logger.fatal(&quot;here is some channel info {0} and {1}&quot;, 15.4, true);\\n \\n // This will log the following String:\\n //   &quot;here is some channel info 15.4 and true&quot;\\n </pre>",
    "tags": [
    {  "tagName": "param",
           "values": ["message The information to log.", "rest Additional parameters that can be subsituted in the str"]},
        {  "tagName": "playerversion",
           "values": ["Flash 9", "AIR 1.1"]},
        {  "tagName": "productversion",
           "values": ["Flex 3"]},
        {  "tagName": "example",
           "values": []},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "void",
      "params": [{ "name": "message", "type": "String"},
    { "name": "rest", "type": "Array"}]}
  ,
  { "type": "method",
    "qname": "info",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Logs the specified data using the <code>LogEvent.INFO</code> level. <code>LogEventLevel.INFO</code> designates informational messages that highlight the progress of the application at coarse-grained level.  <p>The string specified for logging can contain braces with an index indicating which additional parameter should be inserted into the string before it is logged. For example &quot;the first additional parameter was {0} the second was {1}&quot; will be translated into &quot;the first additional parameter was 10 the second was 15&quot; when called with 10 and 15 as parameters.</p>  This String can contain special marker characters of the form {x}, where x is a zero based index that will be replaced with the additional parameters found at that index if specified.  parameter at each &quot;{<code>x</code>}&quot; location, where <code>x</code> is an integer (zero based) index value into the Array of values specified.  <pre>\\n // Get the logger for the mx.messaging.Channel &quot;category&quot;\\n // and send some data to it.\\n var logger:ILogger = Log.getLogger(&quot;mx.messaging.Channel&quot;);\\n logger.info(&quot;here is some channel info {0} and {1}&quot;, 15.4, true);\\n \\n // This will log the following String:\\n //   &quot;here is some channel info 15.4 and true&quot;\\n </pre>",
    "tags": [
    {  "tagName": "param",
           "values": ["message The information to log.", "rest Additional parameters that can be subsituted in the str"]},
        {  "tagName": "playerversion",
           "values": ["Flash 9", "AIR 1.1"]},
        {  "tagName": "productversion",
           "values": ["Flex 3"]},
        {  "tagName": "example",
           "values": []},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "void",
      "params": [{ "name": "message", "type": "String"},
    { "name": "rest", "type": "Array"}]}
  ,
  { "type": "method",
    "qname": "warn",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Logs the specified data using the <code>LogEventLevel.WARN</code> level. <code>LogEventLevel.WARN</code> designates events that could be harmful to the application operation.  <p>The string specified for logging can contain braces with an index indicating which additional parameter should be inserted into the string before it is logged. For example &quot;the first additional parameter was {0} the second was {1}&quot; will be translated into &quot;the first additional parameter was 10 the second was 15&quot; when called with 10 and 15 as parameters.</p>  This String can contain special marker characters of the form {x}, where x is a zero based index that will be replaced with the additional parameters found at that index if specified.  parameter at each &quot;{<code>x</code>}&quot; location, where <code>x</code> is an integer (zero based) index value into the Array of values specified.  <pre>\\n // Get the logger for the mx.messaging.Channel &quot;category&quot;\\n // and send some data to it.\\n var logger:ILogger = Log.getLogger(&quot;mx.messaging.Channel&quot;);\\n logger.warn(&quot;here is some channel info {0} and {1}&quot;, 15.4, true);\\n \\n // This will log the following String:\\n //   &quot;here is some channel info 15.4 and true&quot;\\n </pre>",
    "tags": [
    {  "tagName": "param",
           "values": ["message The information to log.", "rest Aadditional parameters that can be subsituted in the str"]},
        {  "tagName": "playerversion",
           "values": ["Flash 9", "AIR 1.1"]},
        {  "tagName": "productversion",
           "values": ["Flex 3"]},
        {  "tagName": "example",
           "values": []},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "void",
      "params": [{ "name": "message", "type": "String"},
    { "name": "rest", "type": "Array"}]}
  ]
  }
