mirror of
https://github.com/openstf/stf
synced 2025-10-03 17:59:28 +02:00
140 lines
2.7 KiB
JavaScript
140 lines
2.7 KiB
JavaScript
/* eslint quote-props:0 */
|
|
var util = require('util')
|
|
var events = require('events')
|
|
|
|
var chalk = require('chalk')
|
|
|
|
var Logger = new events.EventEmitter()
|
|
|
|
Logger.Level = {
|
|
DEBUG: 1
|
|
, VERBOSE: 2
|
|
, INFO: 3
|
|
, IMPORTANT: 4
|
|
, WARNING: 5
|
|
, ERROR: 6
|
|
, FATAL: 7
|
|
}
|
|
|
|
// Exposed for other modules
|
|
Logger.LevelLabel = {
|
|
1: 'DBG'
|
|
, 2: 'VRB'
|
|
, 3: 'INF'
|
|
, 4: 'IMP'
|
|
, 5: 'WRN'
|
|
, 6: 'ERR'
|
|
, 7: 'FTL'
|
|
}
|
|
|
|
Logger.globalIdentifier = '*'
|
|
|
|
function Log(tag) {
|
|
this.tag = tag
|
|
this.names = {
|
|
1: 'DBG'
|
|
, 2: 'VRB'
|
|
, 3: 'INF'
|
|
, 4: 'IMP'
|
|
, 5: 'WRN'
|
|
, 6: 'ERR'
|
|
, 7: 'FTL'
|
|
}
|
|
this.styles = {
|
|
1: 'grey'
|
|
, 2: 'cyan'
|
|
, 3: 'green'
|
|
, 4: 'magenta'
|
|
, 5: 'yellow'
|
|
, 6: 'red'
|
|
, 7: 'red'
|
|
}
|
|
this.localIdentifier = null
|
|
events.EventEmitter.call(this)
|
|
}
|
|
|
|
util.inherits(Log, events.EventEmitter)
|
|
|
|
Logger.createLogger = function(tag) {
|
|
return new Log(tag)
|
|
}
|
|
|
|
Logger.setGlobalIdentifier = function(identifier) {
|
|
Logger.globalIdentifier = identifier
|
|
return Logger
|
|
}
|
|
|
|
Log.Entry = function(timestamp, priority, tag, pid, identifier, message) {
|
|
this.timestamp = timestamp
|
|
this.priority = priority
|
|
this.tag = tag
|
|
this.pid = pid
|
|
this.identifier = identifier
|
|
this.message = message
|
|
}
|
|
|
|
Log.prototype.setLocalIdentifier = function(identifier) {
|
|
this.localIdentifier = identifier
|
|
}
|
|
|
|
Log.prototype.debug = function() {
|
|
this._write(this._entry(Logger.Level.DEBUG, arguments))
|
|
}
|
|
|
|
Log.prototype.verbose = function() {
|
|
this._write(this._entry(Logger.Level.VERBOSE, arguments))
|
|
}
|
|
|
|
Log.prototype.info = function() {
|
|
this._write(this._entry(Logger.Level.INFO, arguments))
|
|
}
|
|
|
|
Log.prototype.important = function() {
|
|
this._write(this._entry(Logger.Level.IMPORTANT, arguments))
|
|
}
|
|
|
|
Log.prototype.warn = function() {
|
|
this._write(this._entry(Logger.Level.WARNING, arguments))
|
|
}
|
|
|
|
Log.prototype.error = function() {
|
|
this._write(this._entry(Logger.Level.ERROR, arguments))
|
|
}
|
|
|
|
Log.prototype.fatal = function() {
|
|
this._write(this._entry(Logger.Level.FATAL, arguments))
|
|
}
|
|
|
|
Log.prototype._entry = function(priority, args) {
|
|
return new Log.Entry(
|
|
Date.now()
|
|
, priority
|
|
, this.tag
|
|
, process.pid
|
|
, this.localIdentifier || Logger.globalIdentifier
|
|
, util.format.apply(util, args)
|
|
)
|
|
}
|
|
|
|
Log.prototype._format = function(entry) {
|
|
return util.format('%s/%s %d [%s] %s'
|
|
, this._name(entry.priority)
|
|
, entry.tag
|
|
, entry.pid
|
|
, entry.identifier
|
|
, entry.message
|
|
)
|
|
}
|
|
|
|
Log.prototype._name = function(priority) {
|
|
return chalk[this.styles[priority]](this.names[priority])
|
|
}
|
|
|
|
/* eslint no-console: 0 */
|
|
Log.prototype._write = function(entry) {
|
|
console.error(this._format(entry))
|
|
this.emit('entry', entry)
|
|
Logger.emit('entry', entry)
|
|
}
|
|
|
|
exports = module.exports = Logger
|