1 // ==========================================================================
  2 // Project:   The M-Project - Mobile HTML5 Application Framework
  3 // Copyright: (c) 2010 M-Way Solutions GmbH. All rights reserved.
  4 // Creator:   Dominik
  5 // Date:      26.10.2010
  6 // License:   Dual licensed under the MIT or GPL Version 2 licenses.
  7 //            http://github.com/mwaylabs/The-M-Project/blob/master/MIT-LICENSE
  8 //            http://github.com/mwaylabs/The-M-Project/blob/master/GPL-LICENSE
  9 // ==========================================================================
 10 
 11 m_require('core/foundation/request.js');
 12 
 13 /**
 14  * A constant value for logging level: debug.
 15  *
 16  * @type Number
 17  */
 18 M.DEBUG = 0;
 19 
 20 /**
 21  * A constant value for logging level: error.
 22  *
 23  * @type Number
 24  */
 25 M.ERROR = 1;
 26 
 27 /**
 28  * A constant value for logging level: warning.
 29  *
 30  * @type Number
 31  */
 32 M.WARN = 2;
 33 
 34 /**
 35  * A constant value for logging level: info.
 36  *
 37  * @type Number
 38  */
 39 M.INFO = 3;
 40 
 41 /**
 42  * @class
 43  *
 44  * M.Logger defines the prototype for any logging object. It is used to log messages out of the application
 45  * based on a given logging level.
 46  *
 47  * @extends M.Object
 48  */
 49 M.Logger = M.Object.extend(
 50 /** @scope M.Logger.prototype */ {
 51 
 52     /**
 53      * The type of this object.
 54      *
 55      * @type String
 56      */
 57     type: 'M.Logger',
 58 
 59     /**
 60      * This method is used to log anything out of an application based on the given logging level.
 61      * Possible values for the logging level are:
 62      *
 63      * - debug:   M.DEBUG
 64      * - error:   M.ERROR
 65      * - warning: M.WARN
 66      * - info: M.INFO
 67      *
 68      * @param {String} msg The logging message.
 69      * @param {Number} level The logging level.
 70      */
 71     log: function(msg, level) {
 72         level = level || M.DEBUG;
 73 
 74         /* Prevent a console.log from blowing things up if we are on a browser that doesn't support this. */
 75         if (typeof console === 'undefined') {
 76             window.console = {} ;
 77             console.log = console.info = console.warn = console.error = function(){};
 78         }
 79         
 80         switch (level) {
 81             case M.DEBUG:
 82                 this.debug(msg);
 83                 break;
 84             case M.ERROR:
 85                 this.error(msg);
 86                 break;
 87             case M.WARN:
 88                 this.warn(msg);
 89                 break;
 90             case M.INFO:
 91                 this.info(msg);
 92                 break;
 93             default:
 94                 this.debug(msg);
 95                 break;
 96         }
 97     },
 98 
 99     /**
100      * This method is used to log a message on logging level debug.
101      *
102      * @private
103      * @param {String} msg The logging message.
104      */
105     debug: function(msg) {
106         console.debug(msg);
107     },
108 
109     /**
110      * This method is used to log a message on logging level error.
111      *
112      * @private
113      * @param {String} msg The logging message.
114      */
115     error: function(msg) {
116         console.error(msg);
117     },
118 
119     /**
120      * This method is used to log a message on logging level warning.
121      *
122      * @private
123      * @param {String} msg The logging message.
124      */
125     warn: function(msg) {
126         console.warn(msg);
127     },
128 
129     /**
130      * This method is used to log a message on logging level info.
131      *
132      * @private
133      * @param {String} msg The logging message.
134      */
135     info: function(msg) {
136         console.info(msg);
137     }
138 
139 });