mirror of
				https://github.com/node-red/node-red.git
				synced 2025-03-01 10:36:34 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			105 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/**
 | 
						|
 * Copyright 2014, 2015 IBM Corp.
 | 
						|
 *
 | 
						|
 * 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.
 | 
						|
 **/
 | 
						|
 | 
						|
var util = require("util");
 | 
						|
var EventEmitter = require("events").EventEmitter;
 | 
						|
 | 
						|
 | 
						|
var levels = {
 | 
						|
    off:    1,
 | 
						|
    fatal:  10,
 | 
						|
    error:  20,
 | 
						|
    warn:   30,
 | 
						|
    info:   40,
 | 
						|
    debug:  50,
 | 
						|
    trace:  60,
 | 
						|
    metric: 99
 | 
						|
}
 | 
						|
var levelNames = {
 | 
						|
    10: "fatal",
 | 
						|
    20: "error",
 | 
						|
    30: "warn",
 | 
						|
    40: "info",
 | 
						|
    50: "debug",
 | 
						|
    60: "trace",
 | 
						|
    99: "metric"
 | 
						|
}
 | 
						|
 | 
						|
var logHandlers = [];
 | 
						|
 | 
						|
var metricsEnabled = false;
 | 
						|
 | 
						|
var ConsoleLogHandler = function(settings) {
 | 
						|
    this.logLevel = levels[settings.level]||levels.info;
 | 
						|
    this.metricsOn = settings.metrics||false;
 | 
						|
    metricsEnabled = this.metricsOn;
 | 
						|
    this.on("log",function(msg) {
 | 
						|
        if (this.shouldReportMessage(msg.level)) {
 | 
						|
            if (msg.level == log.METRIC) {
 | 
						|
                util.log("[metric] "+JSON.stringify(msg));
 | 
						|
            } else {
 | 
						|
                util.log("["+levelNames[msg.level]+"] "+(msg.type?"["+msg.type+":"+(msg.name||msg.id)+"] ":"")+msg.msg);
 | 
						|
            }
 | 
						|
        }
 | 
						|
    });
 | 
						|
}
 | 
						|
util.inherits(ConsoleLogHandler, EventEmitter);
 | 
						|
 | 
						|
ConsoleLogHandler.prototype.shouldReportMessage = function(msglevel) {
 | 
						|
    return msglevel <= this.logLevel || (msglevel == log.METRIC && this.metricsOn);
 | 
						|
}
 | 
						|
 | 
						|
var log = module.exports = {
 | 
						|
    FATAL:  10,
 | 
						|
    ERROR:  20,
 | 
						|
    WARN:   30,
 | 
						|
    INFO:   40,
 | 
						|
    DEBUG:  50,
 | 
						|
    TRACE:  60,
 | 
						|
    METRIC: 99,
 | 
						|
    
 | 
						|
    init: function(settings) {
 | 
						|
        logHandlers = [];
 | 
						|
        var consoleSettings = {};
 | 
						|
        if (settings.logging) {
 | 
						|
            consoleSettings = settings.logging.console || {};
 | 
						|
        }
 | 
						|
        log.addHandler(new ConsoleLogHandler(consoleSettings));
 | 
						|
    },
 | 
						|
        
 | 
						|
    addHandler: function(func) {
 | 
						|
        logHandlers.push(func);
 | 
						|
    },
 | 
						|
    
 | 
						|
    log: function(msg) {
 | 
						|
        msg.timestamp = Date.now();
 | 
						|
        logHandlers.forEach(function(handler) {
 | 
						|
            handler.emit("log",msg);
 | 
						|
        });
 | 
						|
    },
 | 
						|
    info: function(msg) {
 | 
						|
        log.log({level:log.INFO,msg:msg});
 | 
						|
    },
 | 
						|
    warn: function(msg) {
 | 
						|
        log.log({level:log.WARN,msg:msg});
 | 
						|
    },
 | 
						|
    
 | 
						|
    metric: function() {
 | 
						|
        return metricsEnabled;
 | 
						|
    }
 | 
						|
}
 | 
						|
 |