Home | History | Annotate | Download | only in api
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // Use chrome.logPrivate API to retrieve log information from multiple
      6 // resources in a consistent format.
      7 namespace logPrivate {
      8 
      9   // A filter class that filters log entries by different fields
     10   dictionary Filter {
     11     // Only logs from |sources| will be returned.
     12     DOMString[] sources;
     13     // Only logs created in [|start_timestamp|, |end_timestamp|] will
     14     // be returned.
     15     double start_timestamp;
     16     double end_timestamp;
     17     // Only logs have process name in |process| will be returned.
     18     DOMString[] process;
     19     //  Only logs have level in |level| will be returned.
     20     DOMString[] level;
     21     // Private information will be scrubbed if |scrub| is true.
     22     boolean scrub;
     23   };
     24 
     25   // The class that contains log information.
     26   dictionary LogEntry {
     27     // The time of the log in milliseconds.
     28     double timestamp;
     29     // The raw text of log.
     30     DOMString full_entry;
     31     // The name of the process that the log associated with.
     32     DOMString process;
     33     // The ID of the process that the log associated with.
     34     DOMString process_id;
     35     // The log level.
     36     DOMString level;
     37   };
     38 
     39   // The class that is returned to callback function.
     40   dictionary Result {
     41     // The filter specified to filter log result.
     42     Filter filter;
     43     // Log entries returned based on the filter.
     44     LogEntry[] data;
     45   };
     46 
     47   callback GetHistoricalCallback = void (Result res);
     48 
     49   callback DumpLogsCallback = void ([instanceOf=FileEntry] object logs);
     50 
     51   callback CompletionCallback = void ();
     52 
     53   // The type of the events to be recorded.
     54   enum EventType { network };
     55 
     56   // The type of the event sink where captured events will be sent.
     57   enum EventSink {
     58     // Events will be sent to the webapp via onCapturedEvents. 
     59     capture,
     60     // Events will be sent to a log file which can be collected
     61     // through archive generated with dumpLogs() call.
     62     file
     63   };
     64 
     65   interface Functions {
     66     // Get the existing logs from ChromeOS system.
     67     static void getHistorical(Filter filter, GetHistoricalCallback callback);
     68     // Start capturing events of specific type.
     69     static void startEventRecorder(EventType eventType,
     70                                    EventSink sink,
     71                                    CompletionCallback callback);
     72     // Stop  capturing events of specific type.
     73     static void stopEventRecorder(EventType eventType, CompletionCallback callback);
     74     // Dump all system and captured events into a .tar.gz file.
     75     // The archive file will contain following top level directories:
     76     //   /var/log/
     77     //       ChromeOS system logs.
     78     //   /home/chronos/user/log/
     79     //       Session specific logs (chrome app logs).
     80     //   /home/chronos/user/log/apps/<app_id>
     81     //       Contains webapp specific logs including those collected with
     82     //       startEventRecorder(..., sink="file") call.
     83     static void dumpLogs(DumpLogsCallback callback);
     84   };
     85 
     86   interface Events {
     87     // Receives events of type which is currently being captured.
     88     static void onCapturedEvents(object[] entries);
     89   };
     90 };
     91