Select Git revision
-
Herfort, Thomas authoredHerfort, Thomas authored
index.js 3.50 KiB
function Log (options) {
this.levels = {
'DEBUG': 5,
'INFO': 4,
'NOTICE': 3,
'WARN': 2,
'ERROR': 1,
'FATAL': 0
}
this.options = options || {}
if (this.options.loglevel) { // DEBUG, INFO, NOTICE, WARN, ERROR, FATAL
this.loglevel = this.levels[this.options.loglevel]
} else {
this.loglevel = 2
}
if (this.options.name) {
this.name = this.options.name
} else {
this.name = require('./package.json').name
}
if (this.options.hostname) {
this.hostname = this.options.hostname
} else {
let os = require('os')
this.hostname = os.hostname()
}
if (this.options.file) {
this.fs = require('fs')
this.path = require('path')
try {
if (!this.fs.existsSync(this.options.path)) this.fs.mkdirSync(this.options.path, { recursive: true })
} catch (error) {
throw new Error('Could not create path ' + this.options.path + '\n' + error.toString())
}
try {
this.fs.accessSync(this.path.join(this.options.path, this.options.file), this.fs.constants.R_OK | this.fs.constants.W_OK)
} catch (err) {
try {
this.fs.writeFileSync(this.path.join(this.options.path, this.options.file), '', { flag: 'wx' })
} catch (err) {
throw new Error('Could not Create File ' + this.options.file + '\n' + err.toString())
}
}
}
this.info = function (message) {
if (this.loglevel >= this.levels.INFO) {
return this.log('INFO', message)
} else {
return ''
}
}
this.notice = function (message) {
if (this.loglevel >= this.levels.NOTICE) {
return this.log('NOTICE', message)
} else {
return ''
}
}
this.fatal = function (message) {
if (this.loglevel >= this.levels.FATAL) {
return this.log('FATAL', message)
} else {
return ''
}
}
this.warn = function (message) {
if (this.loglevel >= this.levels.WARN) {
return this.log('WARN', message)
} else {