Source: scripts/log.js

/*
 * Copyright (c) 2016-2017, Michael A. Updike All rights reserved.
 * Licensed under Apache 2.0
 * https://opensource.org/licenses/Apache-2.0
 * https://github.com/opus1269/chrome-extension-utils/blob/master/LICENSE.md
 */
window.Chrome = window.Chrome || {};

/**
 * Log a message. Will also store the LastError to local storage as 'lastError'
 * @namespace
 */
Chrome.Log = (function() {
  'use strict';

  return {
    /**
     * Log an error
     * @param {?string} [message='unknown'] - override label
     * @param {?string} [method='unknownMethod'] - override action
     * @param {?string} [title=null] - a title for the error
     * @memberOf Chrome.Log
     */
    error: function(message = 'unknown', method = 'unknownMethod',
                    title = null) {
      const theTitle = title ? title : 'An error occurred';
      Chrome.Storage.setLastError(
          new Chrome.Storage.LastError(message, theTitle));
      Chrome.GA.error(message, method);
    },

    /**
     * Log an exception
     * @param {Object} exception - the exception
     * @param {?string} [message=null] - the error message
     * @param {boolean} [fatal=true] - true if fatal
     * @param {?string} [title='An exception was caught'] 
     * - a title for the error
     * @memberOf Chrome.Log
     */
    exception: function(exception, message = null, fatal = false,
                        title='An exception was caught') {
      try {
        Chrome.Storage.setLastError(
            new Chrome.Storage.LastError(message, title));
        Chrome.GA.exception(exception, message, fatal);
      } catch (err) {
        Chrome.Utils.noop();
      }
    },
  };
})();