Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / log4js / lib / logger.js
1 "use strict";
2 var levels = require('./levels')
3 , util = require('util')
4 , events = require('events')
5 , DEFAULT_CATEGORY = '[default]';
6
7 var logWritesEnabled = true;
8
9 /**
10  * Models a logging event.
11  * @constructor
12  * @param {String} categoryName name of category
13  * @param {Log4js.Level} level level of message
14  * @param {Array} data objects to log
15  * @param {Log4js.Logger} logger the associated logger
16  * @author Seth Chisamore
17  */
18 function LoggingEvent (categoryName, level, data, logger) {
19   this.startTime = new Date();
20   this.categoryName = categoryName;
21   this.data = data;
22   this.level = level;
23   this.logger = logger;
24 }
25
26 /**
27  * Logger to log messages.
28  * use {@see Log4js#getLogger(String)} to get an instance.
29  * @constructor
30  * @param name name of category to log to
31  * @author Stephan Strittmatter
32  */
33 function Logger (name, level) {
34   this.category = name || DEFAULT_CATEGORY;
35
36   if (level) {
37     this.setLevel(level);
38   }
39 }
40 util.inherits(Logger, events.EventEmitter);
41 Logger.DEFAULT_CATEGORY = DEFAULT_CATEGORY;
42 Logger.prototype.level = levels.TRACE;
43
44 Logger.prototype.setLevel = function(level) {
45   this.level = levels.toLevel(level, this.level || levels.TRACE);
46 };
47
48 Logger.prototype.removeLevel = function() {
49   delete this.level;
50 };
51
52 Logger.prototype.log = function() {
53   var logLevel = levels.toLevel(arguments[0], levels.INFO);
54   if (!this.isLevelEnabled(logLevel)) {
55     return;
56   }
57   var numArgs = arguments.length - 1;
58   var args = new Array(numArgs);
59   for (var i = 0; i < numArgs; i++) {
60     args[i] = arguments[i + 1];
61   }
62   this._log(logLevel, args);
63 };
64
65 Logger.prototype.isLevelEnabled = function(otherLevel) {
66   return this.level.isLessThanOrEqualTo(otherLevel);
67 };
68
69 ['Trace','Debug','Info','Warn','Error','Fatal', 'Mark'].forEach(
70   function(levelString) {
71     addLevelMethods(levelString);
72   }
73 );
74
75 function addLevelMethods(level) {
76   level = levels.toLevel(level);
77
78   var levelStrLower = level.toString().toLowerCase();
79   var levelMethod = levelStrLower.replace(/_([a-z])/g, function(g) { return g[1].toUpperCase(); } );
80   var isLevelMethod = levelMethod[0].toUpperCase() + levelMethod.slice(1);
81
82   Logger.prototype['is'+isLevelMethod+'Enabled'] = function() {
83     return this.isLevelEnabled(level.toString());
84   };
85
86   Logger.prototype[levelMethod] = function () {
87     if (logWritesEnabled && this.isLevelEnabled(level)) {
88       var numArgs = arguments.length;
89       var args = new Array(numArgs);
90       for (var i = 0; i < numArgs; i++) {
91         args[i] = arguments[i];
92       }
93       this._log(level, args);
94     }
95   };
96 }
97
98 Logger.prototype._log = function(level, data) {
99   var loggingEvent = new LoggingEvent(this.category, level, data, this);
100   this.emit('log', loggingEvent);
101 };
102
103 /**
104  * Disable all log writes.
105  * @returns {void}
106  */
107 function disableAllLogWrites() {
108   logWritesEnabled = false;
109 }
110
111 /**
112  * Enable log writes.
113  * @returns {void}
114  */
115 function enableAllLogWrites() {
116   logWritesEnabled = true;
117 }
118
119 exports.LoggingEvent = LoggingEvent;
120 exports.Logger = Logger;
121 exports.disableAllLogWrites = disableAllLogWrites;
122 exports.enableAllLogWrites = enableAllLogWrites;
123 exports.addLevelMethods = addLevelMethods;