149 lines
3.2 KiB
JavaScript
149 lines
3.2 KiB
JavaScript
//
|
|
// Copyright (c) Microsoft and contributors. All rights reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
//
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
//
|
|
|
|
/**
|
|
* Creates a new Logger object
|
|
* @class
|
|
* The Logger class is used to write log information.
|
|
*
|
|
* @constructor
|
|
*
|
|
* @param {string} [level] The log level. Refer to Logger.LogLevels.
|
|
* @param {object} [loggerFunction] The function to write log information.
|
|
*/
|
|
function Logger(level, loggerFunction) {
|
|
/**
|
|
* The log level. Refer to the Logger.LogLevels for available log levels.
|
|
* @name Logger#level
|
|
* @type {string}
|
|
* @see Logger.LogLevels
|
|
*/
|
|
this.level = level;
|
|
|
|
this.loggerFunction = loggerFunction;
|
|
|
|
if (!this.loggerFunction) {
|
|
this.loggerFunction = this.defaultLoggerFunction;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* The available log levels.
|
|
*
|
|
* @const
|
|
* @enum {string}
|
|
*/
|
|
Logger.LogLevels = {
|
|
/**
|
|
* System is unusable.
|
|
*/
|
|
EMERGENCY: 'emergency',
|
|
|
|
/**
|
|
* Action must be taken immediately.
|
|
*/
|
|
ALERT : 'alert',
|
|
|
|
/**
|
|
* Critical condition.
|
|
*/
|
|
CRITICAL : 'critical',
|
|
|
|
/**
|
|
* Error condition.
|
|
*/
|
|
ERROR : 'error',
|
|
|
|
/**
|
|
* Warning condition.
|
|
*/
|
|
WARNING : 'warning',
|
|
|
|
/**
|
|
* Normal but significant condition.
|
|
*/
|
|
NOTICE : 'notice',
|
|
|
|
/**
|
|
* Purely informational message.
|
|
*/
|
|
INFO : 'info',
|
|
|
|
/**
|
|
* Application debug messages.
|
|
*/
|
|
DEBUG : 'debug'
|
|
};
|
|
|
|
Logger.logPriority = [
|
|
Logger.LogLevels.EMERGENCY,
|
|
Logger.LogLevels.ALERT,
|
|
Logger.LogLevels.CRITICAL,
|
|
Logger.LogLevels.ERROR,
|
|
Logger.LogLevels.WARNING,
|
|
Logger.LogLevels.NOTICE,
|
|
Logger.LogLevels.INFO,
|
|
Logger.LogLevels.DEBUG
|
|
];
|
|
|
|
Logger.prototype.log = function (level, msg) {
|
|
this.loggerFunction(level, msg);
|
|
};
|
|
|
|
Logger.prototype.emergency = function(msg) {
|
|
this.log(Logger.LogLevels.EMERGENCY, msg);
|
|
};
|
|
|
|
Logger.prototype.critical = function(msg) {
|
|
this.log(Logger.LogLevels.CRITICAL, msg);
|
|
};
|
|
|
|
Logger.prototype.alert = function(msg) {
|
|
this.log(Logger.LogLevels.ALERT, msg);
|
|
};
|
|
|
|
Logger.prototype.error = function(msg) {
|
|
this.log(Logger.LogLevels.ERROR, msg);
|
|
};
|
|
|
|
Logger.prototype.warn = function(msg) {
|
|
this.log(Logger.LogLevels.WARNING, msg);
|
|
};
|
|
|
|
Logger.prototype.notice = function(msg) {
|
|
this.log(Logger.LogLevels.NOTICE, msg);
|
|
};
|
|
|
|
Logger.prototype.info = function(msg) {
|
|
this.log(Logger.LogLevels.INFO, msg);
|
|
};
|
|
|
|
Logger.prototype.debug = function(msg) {
|
|
this.log(Logger.LogLevels.DEBUG, msg);
|
|
};
|
|
|
|
Logger.prototype.defaultLoggerFunction = function(logLevel , msg) {
|
|
var currentLevelIndex = Logger.logPriority.indexOf(this.level);
|
|
var logLevelIndex = Logger.logPriority.indexOf(logLevel);
|
|
var time = new Date();
|
|
var timeStamp = time.toISOString();
|
|
if (logLevelIndex <= currentLevelIndex) {
|
|
console.log('[' + timeStamp + ']' + this.level + ' : ' + msg);
|
|
}
|
|
};
|
|
|
|
module.exports = Logger;
|