electron-updater
Version:
Cross platform auto-updater for electron applications
86 lines (74 loc) • 2.34 kB
JavaScript
var path = require('path'),
fs = require('fs'),
util = require('util'),
directory = require('./directory.js')
function pad(n, width, z) {
z = z || 0
n = n + ''
return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n
}
function padr(n, width, z) {
z = z || 0
n = n + ''
return n.length >= width ? n : n + new Array(width - n.length + 1).join(z)
}
function formattedDateTime() {
var d = new Date()
var dd = pad(d.getDate(), 2)
var MM = pad(d.getMonth() + 1, 2) //Months are zero based
var yy = pad(d.getFullYear(), 4)
var hh = pad(d.getHours(), 2)
var mm = pad(d.getMinutes(), 2)
var ss = pad(d.getSeconds(), 2)
var mi = pad(d.getMilliseconds(), 3)
return `${dd}/${MM}/${yy}:${hh}:${mm}:${ss}:${mi}`
}
function appendToFile(kind, message) {
var d = formattedDateTime()
var pid = process.pid
var pre = padr(`[${d}:${kind}:${pid}]`, 37, ' ')
var line = `${pre}${message}\n`
var logPath = this.logPath
directory.create(path.dirname(logPath), function (err) {
if(err) return console.error('Error creating logger directory: ' + logPath)
fs.appendFile(logPath, line, {encoding: 'utf8'}, function (err) {
if(err) console.error('Error writing to log: ' + util.inspect(err))
})
})
}
function appendToConsole(kind, message) {
if(this.debug) {
console[kind](message)
}
}
function Logger(appDir, logFn, debug) {
this.debug = !!debug
this.logFn = logFn || appendToFile
if(appDir) this.logPath = path.join(appDir, 'logs', 'updater.log')
}
function log(message) {
this.logFn('log', message)
}
function info(message) {
this.logFn('info', message)
}
function warn(message) {
this.logFn('warn', message)
}
function error(message) {
this.logFn('error', message)
}
function debug(message) {
if(this.debug) {
this.logFn('debug', message)
}
}
Logger.prototype.log = log
Logger.prototype.info = info
Logger.prototype.warn = warn
Logger.prototype.error = error
Logger.prototype.debug = debug
Logger.appendToFile = appendToFile
Logger.appendToConsole = appendToConsole
Logger.default = new Logger(null, appendToConsole, false)
module.exports = Logger